作业帮 > 综合 > 作业

为什么数学运算结果和程序运算结果不同?急.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/09/13 02:00:58
为什么数学运算结果和程序运算结果不同?急.
main()
{
float a=123456.789e5;
float b;
b=a+20;
printf("a=%f,b=%f\n",a,b);
}
运行结果:
实验运算的结果:a=12345678848.000000
b=12345678848.000000
数学运算的结果:a=12345678900
b=12345678920
还有追加分.
float的后几位是随机的,不能精确表示
float 占用32位二进制,有24位用来确定精度,8位用来确定10的多少次方.double占用64位二进制,有48位用来确定精度,16位用来确定的多少次方.24位二进制只能精确到1-2的24次方也就是大概7位数,48位二进制可以精确到2的48次放,大概是14到15位数.