A.D*_*A.D 2 python floating-point notation
我试图在python中处理一些相当大的数字,并遇到溢出错误。我决定进行更多调查,并遇到无法解释的不平等现象。当我评估10 ^ 26时,我得到:
>>> 10**26
100000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
这是完全合乎逻辑的。但是,当我评估10e26并将其转换为int时,我得到:
>>>int(10e26)
1000000000000000013287555072
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我不能正确理解e符号吗?(据我所知,10e26是10 * 10 ^ 26,如该答案所示:与变量一起使用的10e表示法?)
10 ^ 26超过了最大整数大小,所以我也想知道python中是否有任何机制可以允许以科学格式使用数字(不考虑所有那些零)以便能够计算超过数字的运算最大尺寸。
简短的回答是,10e26和10**26你不能代表相同的值。
10**26,两个操作数均为int值,则求值为int。正如int代表具有任意精度的整数一样,其值恰好是预期的10 26。
10e26另一方面,是float文字,因此,结果值受float计算机上该类型的有限精度的限制。的结果int(10e26)是float最接近实数10 27的整数值。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |