16

我试图找到小数点后 2 到 100 位的平方根,但默认情况下它只显示喜欢 10,我该如何更改?

4

4 回答 4

34

十进制模块派上用场。

>>> from decimal import *
>>> getcontext().prec = 100
>>> Decimal(2).sqrt()
Decimal('1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573')
于 2011-01-19T08:36:27.657 回答
7

您可以将decimal模块用于任意精度数字:

import decimal

d2 = decimal.Decimal(2)

# Add a context with an arbitrary precision of 100
dot100 = decimal.Context(prec=100)

print d2.sqrt(dot100)

如果您需要与速度相关的相同能力,还有其他一些选项: [gmpy], 2 , cdecimal

于 2011-01-19T08:41:13.800 回答
2

您可以使用gmpy2

import gmpy2
ctx = gmpy2.get_context()
ctx.precision = 300
print(gmpy2.sqrt(2))
于 2014-06-23T09:49:53.257 回答
1

您可以使用 sympy 和evalf()

from sympy import sqrt
print(sqrt(2).evalf(101))
于 2018-01-15T21:26:33.777 回答