一个计算机初学者的疑问

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:09:17
#include<stdio.h>
Void main( )
{
Float a , b;
a=123456.789e5;
b=a+20;
printf(“%f\n”,b);
}
为什么书上说的是运行程序得到的a和b的值都是12345678848.000000,但是我认为应该是1234567。因为后面的是无意义的。还有怎么说是前8位是准确的?有效数字是7位呀?

对后面的是无意义的,是不准确的,但不代表它没有,如果没有将带来更大的误差,想想按你怎么说,以后超过1234567的都是1234567,10一百次方也是1234567。前面几位是精确的,后面几位是系统随即产生的。
要了解这是怎么产生的,就得了解内存。我在这里也很难说得清楚,其实也不用了解那么清楚,就知道有这个就行了。想了解就去看点书,很多书上有说的。

你运行一下不就知道了!
实践是检验真理的唯一标准,书上也是会错的!

a=123456.789e5
他是十六进制的
有效的是六位

书上没错,float占四个字节,提供小数点后六位有效数字