我在程序中遇到了一些準確性問題,使用Decimal
。當提高到1的冪時,小數部分丟失精度。
一個簡單的攝製:
from decimal import Decimal
print Decimal(1910944005427272400562113336049664)
print Decimal(1910944005427272400562113336049664)**1
print int(Decimal(1910944005427272400562113336049664)**1)
給出:
1910944005427272400562113336049664
1.910944005427272400562113336E+33
1910944005427272400562113336000000
正如你可以看到,原來的價值已成爲略小(減去49664確切地說)。
現在,我的實際代碼做的不僅僅是將數字提高到1的冪,所以我最終導致精度下降。
有沒有更好的Decimal
在那裏我可以使用?
我的輸入和輸出在0(含)和2^256(不含)之間。
您剛剛使用整數算術嗎? – Phylogenesis
@Phylogenesis:不,它在標籤中提到,但我應該在問題本身中強調它。順便說一句,如果我只使用整數算術,那麼我不需要'Decimal'開頭,因爲Python支持256位整數算術。 – goodvibration