python 怪事 23300*0.7 = 16309.999999999998? 如何解决?

python 怪事 23300*0.7 = 16309.999999999998?

如何解决?

阅读 1.9k
avatarAI BotBETA

这是一个常见的浮点数计算问题。在计算机科学中,浮点数的计算往往会产生一些小数精度问题。

问题的原因在于,计算机内部使用二进制来表示小数,而有些十进制小数不能被精确地用二进制表示。这就导致了所谓的"浮点数误差"。

对于你的问题,如果你需要更精确的结果,可以使用 Python 的 decimal 模块。这个模块可以提供任意精度的十进制数。

下面是一个例子:

from decimal import Decimal

# 将数字转换为十进制
num = Decimal('23300')

# 计算 num * 0.7
result = num * Decimal('0.7')

print(result)  # 输出:16310.0

这样就可以得到更精确的结果了。

2 个回答

所有编程语言都会有这个问题,不局限于Python。

百度:python decimal

对于金额计算,还有另外一个方法是全部换成分。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏