c++ float精度丢失

来源:互联网 发布:手机淘宝店怎样发货 编辑:程序博客网 时间:2024/05/22 04:42

代码

#include <iostream>int main(int argc, const char * argv[]) {    using namespace std;    float a = 2.34E+22f;    float b = a + 1.0f;    cout << "a = " << a << endl;    cout << "b - a = " << b - a << endl;    return 0;}

运行结果

a = 2.34e+22b - a = 0

分析

该程序将数字加1,然后减去原来的数字。结果应该为1。但运行结果为0,问题在于,2.34E+22是一个小数左边有23位的数字。加上1,就是在第23位加1。但float类型只能表示数字中的前6或前7位,因此修改第23位对这个值不会有任何影响。

1 0
原创粉丝点击