我试图获取 long int 的 sqrt 值
from math import sqrt
print sqrt(410241186411534352)
<< 640500731.0
Run Code Online (Sandbox Code Playgroud)
它返回 640500731.0,其精度确实是 640500730.999999993...。如何解决这个问题?
我按照@DSM和@Rob的回复解决了,非常感谢。
from math import sqrt
from decimal import Decimal
print Decimal(410241186411534352).sqrt()
Run Code Online (Sandbox Code Playgroud)
>>> import decimal
>>> decimal.getcontext().prec = 100
>>> a=decimal.Decimal(410241186411534352)**decimal.Decimal(.5)
>>> print a
640500730.9999999929742468943411712910588335443486974564849183256021518032770726219326459594197730639
>>> print a*a
410241186411534352.0000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3506 次 |
| 最近记录: |