在c++中,输入一组数据计算平均数且按要求保留2位小数,大部分数据测试都正确,唯独发现在保留2位小数输出时出现了五舍六入的现象。经过多次测试后发现一个很奇怪的现象,变量类型为double时,保留1或2位小数且原数小数数位只比需保留数位多一位时就会出现五舍六入现象。
#include<bits/stdc++.h>
using namespace std;
int main()
{
double n;
cin>>n;
cout << fixed << setprecision(1)<<n<<endl;
printf("%.1lf",n);
return 0;
}
2.15
2.1
2.1
目前的测试正常的方法:
1.改变变量类型为float
2.整数部分大于或等于小数部分(如,00.000保留2位小数,需改为000.000
3.原数小数部分比需要保留的数位多1位(如,00.000保留2位小数出错,需改为00.0000)
如何解决这个问题?实现正常的四舍五入。以及这个问题的原因
四舍六入五凑偶,你没学过怎么正确的舍入吗
你用了c++的控制函数,要加上iomanip头文件,而且你如果用了cout输出,就不需要用printf