#3029. 【深基1.例5】输出浮点数与精度误差
【深基1.例5】输出浮点数与精度误差
题目描述
观察以下程序:
#include<iostream>
using namespace std;
int main(){
cout << 500.0 / 3 << endl;
cout << 5000000.0 / 3 << endl;
cout << 0.000005 / 3 << endl;
cout << 5e6 / 3 + 5e-6 / 3 - 5e6 / 3 << endl;
return 0;
}
本题任务
- 1、手动计算上述程序结果
- 2、复制上述程序到DevC++运行得到结果
- 3、比对两边结果是不是一样?并找出原因
解释
- 使用cout输出浮点数,默认保留不超过6位有效位数字,因此500.0/3输出166.667
- 如果输出数值太大或太小会采用科学计数法进行表示,同样保留不超过6位有效数字,例如5000000/3正常输出应该为16666666.66,通过科学计数法表示为1.66667e+06
- 如果是正数,+可以省略
- 第四个输出1.6666e-06的原因是有效位的浮点数超过了限制,因此有效数字的最右端就会被舍去。