早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
copy(dist.begin(),dist.end(),ostream_iterator(cou 2020-05-14 …
#include iostream.h int main() { bool flag; flag= 2020-05-14 …
这两组单词有什么区别?precise,precision与accurate,accuracy,请尽 2020-06-11 …
C++的四舍五入cout.setf(ios::fixed);cout.precision(4);c 2020-06-27 …
请翻译成中文.Whatmanydonotunderstandisthattherearetwodi 2020-07-23 …
return1什么意思#include<iostream.h>#include<stdlib.h> 2020-07-23 …
VC中的cannotexecuteprogram是什么意思我的运行程序是这个#include<io 2020-07-23 …
ifstream的用法#include<fstream.h>#include<iostream.h 2020-07-23 …
请问这段程序的错误是什么意思不明白?#include"iostream.h"voidmain(){ 2020-07-23 …
关于化学数据处理,有的文献测了很多组数据,数据符合正态分布,然后这些数据的precision是+/- 2020-11-06 …