为什么10次方不等于Python中大数的科学记数法?
为什么 10**5 等于 1e5 而 10**50 不等于 Python 中的 1e50?
Python 3.9.6 (tags/v3.9.6:db3ff76, Jun 28 2021, 15:26:21) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 10**5 == 1e5
True
>>> 10**50 == 1e50
False
直到 10**22 都是如此。那么它是假的:
>>> 10**22 == 1e22
True
>>> 10**23 == 1e23
False
回答
Python 3 支持大整数并尽可能使用它们。10**50是对整数的计算,并产生精确的10 的 50 次方数。在另一方面,科学记数法始终使用浮点运算,所以1e50是一个浮点值,这大约等于十到五十动力。
>>> type(10 ** 50)
<class 'int'>
>>> type(1e50)
<class 'float'>
- 我强烈建议不要删除这个问题。这是一个公平的问题,可以轻松帮助其他人。如果您认为自己对答案有更深入的了解,那么请务必发布包含您的发现的第二个答案。多多益善!
- 另一个注意事项:`10.0**50` 等于 `1e50`(因为两者都是浮动的)