Tyche_BO 2020-08-20 11:25 采纳率: 0%
浏览 416
已采纳

python明明可以整除的数,缺出现了小数点的数值。

本来想用python 的math.ceil()来做小数点取整,但发现有时候明明可以整除的数,但计算出来会出现小数点,导致出结果异常。麻烦大佬来解析下原因 和解决方法 ,谢谢

    a = math.ceil((0.55-0.1)/0.03)
    b = ((0.55-0.1)/0.03)
    print(a) # # output: 16   (正常输出应该是15)
    print(b) # output: 15.000000000000004
    print(0.45/0.03) # output: 15.000000000000002

  • 写回答

4条回答 默认 最新

  • soar3033 2020-08-20 12:13
    关注

    这是因为浮点数实际上是用二的幂数和小数逼近的,实际上浮点数是有精度的,难免的有很小的误差。要是想避免这个问题,可以对数据的小数点位数做限制。
    可以改成:

    a = math.ceil(round((0.55-0.1)/0.03,4))
    

    从而忽略掉精度导致的尾数。

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

报告相同问题?