在編程中,我只使用整數。但這次是為了進行一些計算。我需要計算
- [x] = gif(x) = math.ceil(x)
但是,我懷疑其精確度 數字演算法
我需要使用Python的更高程度的精度。
uj5u.com熱心網友回復:
從法國維基百科討論頁,一個近似于小數點后6位的演算法:
import math as m
EulerMascheroniApp = round( ( 1.-m. gamma(1 1.e-8))*1.e14 ) *1.e-6
print(EulerMascheroniApp)
# 0.577216
這個常數在sympy模塊中也可以使用,名稱為EulerGamma:
>>> import sympy
>>> sympy.EulerGamma
EulerGamma
>>> sympy.EulerGamma.evalf()
0.577215664901533
>>> - sympy.polygamma(0, 1)
歐拉伽馬(EulerGamma
>>> sympy.stieltjes(0)
歐拉伽馬
>>> sympy.stieltjes(0, 1)
EulerGamma
檔案:
在這最后一個檔案鏈接中,你可以找到更多關于如何更精確地評估常數的資訊,如果默認的.evalf()是不夠的。
如果你仍然想自己計算這個常數作為練習,我建議將你的結果與 sympy 的常數進行比較,以檢查其準確性和正確性。
uj5u.com熱心網友回復:
你可以使用python小數點內置模塊來控制你要使用多少小數點(https://docs.python.org/2/library/decimal.html)來進行計算。
a = 1/7。
len(str(a))-2。
Out[1] 17
使用十進制:
from decimal import *
getcontext().prec = 90 #90小數的精度。
a = 小數(1) / 小數(7)
len(str(a))-2。
Out[2] 90
基本上:
n = 100000
Euler_Mascheroni = -Decimal(log(Decimal(n))) sum([Decimal(1)/Decimal(i) for i in range(1, n)])
歐拉_馬舍羅尼
Out[3] 0.5772106648931993300735700990829054997103249183447011016275294159381819822823091944316360
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/333358.html
標籤:
