【问题标题】:Python 3 float problems?Python 3 浮动问题?
【发布时间】:2020-01-12 19:02:21
【问题描述】:

我试图在 python 3 中进行以下计算:

https://i.stack.imgur.com/f5y7z.png

添加:

https://i.stack.imgur.com/Txoya.png

应该返回 0(图像是用 wolframalpha 制作的)。

当我尝试在 python 中做同样的计算时:

pow((2*3*5),28)-29*math.floor(pow((2*3*5),28)/29)-1

它返回4303955653455607115022335

每个部分的值为:

228767924549610000000000000000000000000000 正确。

-228767924549609995696044346544392884977665 不正确。

我该如何解决这个问题?

【问题讨论】:

标签: python floating-point precision calculation bignum


【解决方案1】:

您正在使用精度有限的浮点除法/,因此您的大结果会四舍五入。

相反,你可以用整数得到你想要的,取整除法//,它有一个无限精度的整数结果:

import math
pow((2*3*5),28)-29*(pow((2*3*5),28)//29)-1
# 0

【讨论】:

  • 真的是在寻找答案,却找不到任何地方
猜你喜欢
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 2011-09-24
  • 2017-08-16
相关资源
最近更新 更多