Python math.sqrt丢失精度

Python math.sqrt丢失精度,python,Python,我试图得到长整型的sqrt值 from math import sqrt print sqrt(410241186411534352) << 640500731.0 Python数学库函数是围绕C数学库函数的精简包装器,因此Python在进行计算之前将长整数转换为双浮点数。如果您想要Python中真正的多精度算法,可以试试 如果您需要整数sqrt函数,请参阅以获得多个选项。任何更改都可以使用纯python解决此问题,而无需其他软件包?@AaronJiang:您可以使用decim

我试图得到长整型的sqrt值

from math import sqrt
print sqrt(410241186411534352) 

<< 640500731.0

Python数学库函数是围绕C数学库函数的精简包装器,因此Python在进行计算之前将长整数转换为双浮点数。如果您想要Python中真正的多精度算法,可以试试

如果您需要整数sqrt函数,请参阅以获得多个选项。任何更改都可以使用纯python解决此问题,而无需其他软件包?@AaronJiang:您可以使用
decimal
模块。
decimal
模块由@Rob很好地演示ᵩ 在另一个回答中。@AaronJiang:很高兴能帮忙。如果
decimal
适合您,您可能需要勾选@Robᵩ'It’答案是正确的。
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
>>>