我在程序中遇到了一些准确性问题,使用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