H5W3
当前位置:H5W3 > 其他技术问题 > 正文

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

回答

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

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

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

本文地址:H5W3 » python明明可以整除的数,缺出现了小数点的数值。

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址