70防火阀联动新风机:请问高手这是为什么?C的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/24 11:49:40
请问大家为什么

main()
{
float a,b;
a=123456.789e5
b=a+20;
printf("%f,%f",a,b);

{

显示的总是a=12345678848.00000
b=12345678848.00000
应该是超出精度的问题,但为什么总是显示那些数字,而不是随即生成的数字?

谢谢执教!
我明白是超出位数,但为什么只显示那几个数字,而不是别的?

实型变量只能保证的有效数字是7位。

这是个c语言里的基本问题

float型数据能保证的有效位数只有7位,所以你得到的一般只能保证前面的7位是准确的,但是后面的一般准不了,即使碰巧碰上了,那也是运气。这里的话,只能保证前7位准确,同时在12345678900.0面前,20太小了,加和不加时一样的,被舍掉了。所以你看到了输出结果是一样的。