为何在c语言中 (float)0.45 / 3 != 0.15 ??? 而 0.45 /3 == 0.15又是正确的
答案:1 悬赏:0 手机版
解决时间 2021-03-06 18:59
- 提问者网友:戎马万世
- 2021-03-06 10:51
为何在c语言中 (float)0.45 / 3 != 0.15 ??? 而 0.45 /3 == 0.15又是正确的
最佳答案
- 五星知识达人网友:独钓一江月
- 2021-03-06 12:30
因为浮点数在计算机里是不精确的,所以尽量不要直接比较两个浮点数相等
应该用fabs(a-b)<1e-10这样决定两个数相等
不加float 就是double型
float的精度有限因此 0.45可能是0.449999
(float)0.45 / 3 这个精度有损失
0.15 double 型
0.45 / 3 double 型
double型的0.45可能是0.44999999999999999999999999999
所以出现异常不稀奇
应该用fabs(a-b)<1e-10这样决定两个数相等
不加float 就是double型
float的精度有限因此 0.45可能是0.449999
(float)0.45 / 3 这个精度有损失
0.15 double 型
0.45 / 3 double 型
double型的0.45可能是0.44999999999999999999999999999
所以出现异常不稀奇
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯