早教吧作业答案频道 -->其他-->
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
这什么情况?
cout.setf(ios::fixed);
cout.precision(4);
cout<
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<
怎么来的我就不知道了
又测试另一数据:
cout.setf(ios::fixed);
cout.precision(2);
cout<
这什么情况?
▼优质解答
答案和解析
在你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就完事
如果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就完事
看了 C++的四舍五入cout.s...的网友还看了以下:
椭圆C:x²/a²+y²/2=1的焦点在x轴上,右顶点A为抛物线y²=16x的焦点(1)求椭圆C的 2020-04-06 …
在平面直角坐标系xOy中,椭圆C的中心为原点,焦点F1,F2在x轴上,离心率为12.过F1的直线交 2020-06-21 …
小学的时候课本上是说闰年是4年一次吧?但是现在有个问题困扰了.说要计算某年是不是闰年是用年份除4. 2020-07-10 …
已知a,b,c是一个三角形的三边,试证明a的4次方+b的4次方+c的4次方-2a的2次方b的2次方 2020-07-20 …
已知双曲线c:x2/a2-y2/b2=1(a>0,b>0)的离心率为√2,且过点(2,√3)(1已 2020-07-30 …
卷心菜中含有丰富的维生素C,维生素C在酸性溶液中能被碘氧化.某实验小组通过如下实验对卷心菜中维生素C 2020-10-29 …
A、B、C是初中化学常见的物质,A是某种具有吸附性的物质的主要成分,B、C都是氧化物,通常为无色气体 2020-11-05 …
小方与朋友约好,下午4点30在咖啡厅见面,为此他们在早上8点钟没人均将自己的表对准,小方于4点30正 2020-11-07 …
“我们可以得到A和B分别与C、D、E之间的关系”这句话用英语怎么表达“我们可以得到A和B分别与C、D 2020-12-25 …
对于句子:①延长线段AB到点C;②两点之间线段最短;③轴对称图形是等腰三角形;④直角都相等;⑤同角的 2021-02-02 …