#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的原因是有效位的浮点数超过了限制,因此有效数字的最右端就会被舍去。