簡體   English   中英

如何使用 python 模塊 gmpy2 將數字的精度設置為 10 位小數

[英]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位計算2sqrt ,我們有:

>>> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM