早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C++的四舍五入cout.setf(ios::fixed);cout.precision(4);cout

题目详情
C++的四舍五入
cout.setf(ios::fixed);
cout.precision(4);
cout<这时候的输出是:1.4900
double format1(double n){
double temp=n*1000;
if(int(temp)%10>=5)return n+0.01;
else return n;
}
cout.setf(ios::fixed);
cout.precision(4);
cout<这个输出是1.5000
怎么来的我就不知道了
又测试另一数据:
cout.setf(ios::fixed);
cout.precision(2);
cout<这个输出1.49
这什么情况?
▼优质解答
答案和解析
在你format1函数里是根据千分位上实际数字来决定是不是要加0.1的
如果sqrt(result)的实际值是 1.48999, 显示4位小数就成了 1.4900, 但是经过format1函数的处理, 千分位是9所以format返回值是 1.49999 ,显示4位小数就成了1.5000
而你给format1函数一个1.4900就没有这个问题
其实format这个“四舍五入”的错误就在于, 你舍入之后还得把尾巴截掉才对, 比方说 1.5四舍五入之后是2而不是2.5, 你不能只是加上个1就完事