[英]How can I set the precision of a number to have 10 decimal digits using the python module gmpy2
我創建了以下 python 代碼。 它應該首先將數字的精度設置為 10 位小數,但打印 pi 顯示 3.156,它只有 3 位小數。 有人請讓我知道我做錯了什么。
import gmpy2 as g
from ipywidgets import widgets
from IPython.display import display
button = widgets.Button(description="Click Me!")
display(button)
max_precision = g.get_max_precision()
pi = g.const_pi()
g.set_context(g.context())
def set_bits_precision(decimal_precision):
bits_precision = int(decimal_precision/g.log(2))
if (bits_precision > max_precision): bits_precision = max_precision
ctx = g.get_context()
ctx.precision = bits_precision
return
def square_root(number):
return g.sqrt(number)
def circle_perimeter(radius):
return 2*pi*radius
def on_button_clicked(x):
return square_root(x)
set_bits_precision(10)
print(pi)
button.on_click(on_button_clicked(2))
你可以使用下面的function根據你想要的位數得到gmpy2
精度。
>>> import gmpy2 as gmp
# n is the number of digits
>>> def gmp_prec(n): return int(n * gmp.log(10) / gmp.log(2)) + 1
假設您需要設置gmpy2
的正確精度以獲得十位有效十進制數字,那么您可以編寫。
>>> gmp.get_context().precision = gmp_prec(10)
例如,要通過gmpy2
用正確的小數點后20
位計算2
的sqrt
,我們有:
>>> gmp.get_context().precision = gmp_prec(20)
請注意, gmp_prec(20)
返回67
。
然后,我們可以使用如下結果:
>>> print(gmp.sqrt(2))
1.414213562373095048804
上述結果精確到小數點后 20 位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.