canf("%f",&a); printf("%f",a); 输入25.81,为何显示25.809999?
答案:3 悬赏:20 手机版
解决时间 2021-11-14 21:23
- 提问者网友:末路
- 2021-11-14 12:17
canf("%f",&a); printf("%f",a); 输入25.81,为何显示25.809999?
最佳答案
- 五星知识达人网友:十鸦
- 2021-11-14 13:31
跟数在计算机的存储有关 二进制 你想输出两位就 printf("%2.f",a);追问.2%f,输出25.81
.3%f,输出25.810
.4%f,输出25.8100
.5%f,输出25.81000
.6%f,输出25.809999
如何解释?追答2进制表示小数的时候只能够表示能够用1/(2^n)的和的任意组合
例如:
0.5能够表示,因为它可以表示成为1/2
0.75也能够表示,因为它可以表示成为1/2+1/(2^2)
0.875也能够表示,因为它可以表示成为1/2+1/(2^2)+1/(2^3)
但是0.1不能够精确表示,因为它不能够表示成为1/(2^n)的和的形式
0.81也不能用二进制精确表示
.3%f,输出25.810
.4%f,输出25.8100
.5%f,输出25.81000
.6%f,输出25.809999
如何解释?追答2进制表示小数的时候只能够表示能够用1/(2^n)的和的任意组合
例如:
0.5能够表示,因为它可以表示成为1/2
0.75也能够表示,因为它可以表示成为1/2+1/(2^2)
0.875也能够表示,因为它可以表示成为1/2+1/(2^2)+1/(2^3)
但是0.1不能够精确表示,因为它不能够表示成为1/(2^n)的和的形式
0.81也不能用二进制精确表示
全部回答
- 1楼网友:英雄的欲望
- 2021-11-14 15:07
你没有给出输出的小数位限制 printf("%.2,a)
- 2楼网友:woshuo
- 2021-11-14 14:42
浮点数是有精度问题的。不要纠结啦。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯