当前位置: 代码迷 >> C语言 >> [求助]为什么得到 这个数
  详细解决方案

[求助]为什么得到 这个数

热度:59   发布时间:2006-01-24 20:17:00.0
[求助]为什么得到 这个数
在 谭浩强得 《C语言程序设计》47页有专业得 一个 实型数据得 舍入误差
main()
{float a,b;
a=123456.789e5;
b=a+20;
printf("%f",b);
}
运行程序得到a和b的值都实12345678848.000000
我知道程序内printf函数中的“%f”是输出一个 实数时的 格式符,程序运行时,输出b 的值与a相等,但a不是12345678900吗,为什么运行得12345678848.000000
----------------解决方案--------------------------------------------------------
了解一下浮点存储格式你就明白了
----------------解决方案--------------------------------------------------------

浮点数的类型有效数字只有7位
所以前7位能够保证
后面的就是随机给出的 并不原来你所赋值的数了


----------------解决方案--------------------------------------------------------
  相关解决方案