jerryqd 2009-03-08 11:50
浏览 310
已采纳

浮点值的小数计算为什么不准?

都是浮点数为什么2.0f-1.1f是对的。得0.9而2.0-1.1确实不准得到.89999999
我想知道的是为什么不准?
再就是浮点小数即然不准,那大家都在什么情况下用过浮点型。
[b]问题补充:[/b]
请注意
同时都是浮点型,为什么float相减是对的,double相减有误差。
[b]问题补充:[/b]
好吧,同志们,我再完善一下这个问题。

同时都是浮点型,为什么float相减2.0f-1.1f是0.9,double相减2.0-1.1是0.89999

他们在处理小数上有何区别

  • 写回答

4条回答 默认 最新

  • xenocide 2009-03-08 20:29
    关注

    [quote]
    同时都是浮点型,为什么float相减2.0f-1.1f是0.9,double相减2.0-1.1是0.89999
    [/quote]

    因为现在的CPU都是算double的。

    float运算会被转化为double运算,结果四舍五入成float的精度。
    结果0.8999999999...就变成了0.9。

    double相减后面还有n个9,但是被简单截断隐藏了,它不会四舍五入。
    如果你格式化输出数字,你可以看到大约还有15或者16个9。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示