Python 为什么是 10e26 != 10**26 ? ( float 不准确?)

标签 python floating-point notation

我试图在 python 中处理一些相当大的数字,但遇到了溢出错误。我决定再调查一下,结果发现了一个我无法解释的不平等现象。 当我计算 10^26 时,我得到:

>>> 10**26
100000000000000000000000000

这是完全合乎逻辑的。但是,当我评估 10e26 并将其转换为 int 时,我得到:

>>>int(10e26)
1000000000000000013287555072

这是为什么? 我没有正确理解 e 符号吗? (据我所知,10e26 是 10*10^26,如这个答案所示:10e notation used with variables?)

10^26 超过了最大整数大小,所以我也想知道 python 中是否有任何机制允许使用科学格式的数字(不考虑所有这些零)以便能够计算操作数字超过最大大小。

最佳答案

简短的回答是 10e2610**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/

相关文章:

c++ - 如何在 C++ 中检查无限和不确定的值?

python - 从 Python 到 C, float 的精度是否发生变化?

c++ - 将类型转换 float 与零进行比较时的奇怪行为

python - 如何在 Python 中使用 unDetected_chromedriver 运行 Firefox 浏览器?

python - 如何在输入无效之前调用函数?

python - 关闭 python pypdf 的问题 - 写作。获取 valueError : I/O operation on closed file

python - 在具有不同索引的Python中添加两个数据 Pandas 系列

css - 我应该在前、后、首字母和第一行伪元素中使用单冒号 (:) 还是双冒号 (::)?

Scala - 前缀一元运算符

java - 集合表示法的特定 Java 正则表达式