崩坏学园2希儿的祈愿:一道c语言的程序题。

来源:百度文库 编辑:高校问答 时间:2024/04/30 06:26:39
已知道
main()
{float x=123456.6789;
printf("%f ,x);
输出结果为
12345.678711
请问
为什么输出结果不是x=12345.6789?

谢谢

实型变量精度不够。把float x=123456.6789改成double x=123456.6789就可以了。

这和计算机存储数字的方法有关。
计算机存储浮点数,使用二进制,因此,小数点后面的数字,也是以0和1表示的,而根据二进制到十进制的转换,0.1表示0.5,0.01表示0.25,后面的依次除以2,这样类推下去,是无法精确的表示出123456.6789这个数字的。