Sha*_*ane 2 python math floating-point command-line python-2.7
这个数学方程......
(4195835 / 3145727) * 3145727 - 4195835
Run Code Online (Sandbox Code Playgroud)
应该等同于0.根据软件测试(第2版)一书,
如果你还有其他任何东西,你就会有一个旧的英特尔奔腾CPU,它带有一个浮点分区buga软件漏洞,它被烧成一个计算机芯片并在制造过程中一遍又一遍地重现.
使用Python 2.7,我进入-1050108命令行.
使用Node我0就像在计算器中一样
对此更深入的解释?这最初是由于1994年迪士尼狮子王的视频游戏中的一个错误而提出来的.我想我会在一些事情上测试这个等式.
Bri*_*ain 12
你做了整数数学而不是浮点数学.
>>> (4195835 / 3145727) * 3145727 - 4195835
-1050108
>>> (4195835. / 3145727.) * 3145727. - 4195835.
0.0
Run Code Online (Sandbox Code Playgroud)
请注意,您可以使用py3k或PEP238除法从整数中获得所需的行为.
>>> from __future__ import division
>>> (4195835 / 3145727) * 3145727 - 4195835
0.0
Run Code Online (Sandbox Code Playgroud)
随着整数运算(这是你所使用的),(4195835 / 3145727)给你1.33382...四舍五入到整数1.
所以你有效地结束了:
(4195835 / 3145727) * 3145727 - 4195835
= 1 * 3145727 - 4195835
= 3145727 - 4195835
= -1050108
Run Code Online (Sandbox Code Playgroud)
这就是为什么你得到那个负数.
您可以通过使其中一个值浮点来强制它使用浮点:
>>> (4195835. / 3145727) * 3145727 - 4195835
0.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |