qq_28057679 2018-10-26 15:09 采纳率: 0%
浏览 9261
已结题

python浮点数大小比较

MA5 = round(5.976,2)
MA5_1 = round(6.098,2)
MA10 = round(6.350,2)
MA10_1 = round(6.475,2)

print MA10-MA5
print MA10_1-MA5_1

if MA10-MA5<MA10_1-MA5_1:
print "ccc"

a=0.37
b=0.37
if a<b:
print "ddd"

结果:0.37 0.37 ccc ddd未进入条件。请问这是怎么回事,怎么解决比较问题,明明是一样的

  • 写回答

3条回答 默认 最新

  • threenewbee 2018-10-26 15:53
    关注

    你这么提问没法回答,缩进都没有,谁知道你if怎么写的。
    先学习下这个:https://blog.csdn.net/askdevteam/article/details/82692845


    这很正常,浮点数在计算机里是二进制表示的,10进制能取整的数,比如5.98 6.35等,用二进制表示都是循环小数,有误差。
    所以虽然显示的都是0.37和0.37,它们就出现误差了。

    好比三进制的0.1 0.2对应10进制的0.3333333.... 0.6666666......
    那么三进制的0.1+0.2和1.0比较,虽然都是1.0,但是用10进制计算,就是0.999999....和1.0,前者<后者。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable