Python math.sqrt 损失精度

标签 python

我试图获取一个 long int 的 sqrt 值

from math import sqrt
print sqrt(410241186411534352) 

<< 640500731.0

它返回了 640500731.0,精确度确实是 640500730.999999993...。如何解决?

根据@DSM和@Rob的回复解决了,非常感谢。

from math import sqrt
from decimal import Decimal
print Decimal(410241186411534352).sqrt() 

最佳答案

>>> import decimal
>>> decimal.getcontext().prec = 100
>>> a=decimal.Decimal(410241186411534352)**decimal.Decimal(.5)
>>> print a
640500730.9999999929742468943411712910588335443486974564849183256021518032770726219326459594197730639
>>> print a*a
410241186411534352.0000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>> 

关于Python math.sqrt 损失精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15696267/

相关文章:

python - 实例化具有任意数量属性的类

python - TypeError:不支持的操作数类型 |: 'int' 和 'str'

python - 写入打开的 CSV 时跳过 header

python - 如何在同一目录中的另一个 python 脚本中调用 python 脚本?

python - 用零替换数据框中的上三角和下三角值,或仅保留对角线值

python - 在 Python 中编写 ElementTree 时如何保留 ASCII 十六进制代码点?

python - 如何在 vscode 中为 python 启用代码镜头支持?

python - 在 OpenCV2 中找到最接近图像中心的轮廓

javascript - Python 网络抓取 - 从哪里开始

python - 使用 torch.autocast 时,如何强制各个图层 float 32