我试图在 python 中处理一些相当大的数字,但遇到了溢出错误。我决定再调查一下,结果发现了一个我无法解释的不平等现象。 当我计算 10^26 时,我得到:
>>> 10**26
100000000000000000000000000
这是完全合乎逻辑的。但是,当我评估 10e26 并将其转换为 int 时,我得到:
>>>int(10e26)
1000000000000000013287555072
这是为什么? 我没有正确理解 e 符号吗? (据我所知,10e26 是 10*10^26,如这个答案所示:10e notation used with variables?)
10^26 超过了最大整数大小,所以我也想知道 python 中是否有任何机制允许使用科学格式的数字(不考虑所有这些零)以便能够计算操作数字超过最大大小。
最佳答案
简短的回答是 10e26
和 10**26
不代表相同的值。
10**26
,两个操作数都是 int
值,计算结果为 int
。由于 int
表示具有任意精度的整数,因此它的值正好 1026 符合预期。
10e26
是一个 float
字面量,因此结果值受限于 float
的有限精度> 在您的机器上输入。 int(10e26)
的结果是float
的整数值最接近实数1027。
关于Python 为什么是 10e26 != 10**26 ? ( float 不准确?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54353247/