Python中的非零算术检查

2024-09-21 03:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

这个数学方程式。。。在

(4195835 / 3145727) * 3145727 - 4195835

应该等于0。根据《软件测试》(第二版)一书

If you get anything else, you have an old Intel Pentium CPU with a floating-point division buga software bug burned into a computer chip and reproduced over and over in the manufacturing process.

使用Python2.7,我在命令行中得到-1050108。在

{I>就像在节点中使用计算器一样

对此有更深入的解释吗?这最初是由于1994年迪斯尼的《狮子王》中的一个错误引起的。我想我可以用一些东西来检验这个等式。在


Tags: andyouangetifhave数学else
2条回答

使用整数数学(这是您正在使用的),(4195835 / 3145727)将使您1.33382...向下舍入到整数1。在

所以你最终会得到:

  (4195835 / 3145727) * 3145727 - 4195835
=          1          * 3145727 - 4195835
=                       3145727 - 4195835
=                           -1050108

这就是为什么你得到那个负数。在

只需将其中一个值设为浮点,就可以强制它使用浮点:

^{pr2}$

你做了整数运算而不是浮点运算。在

>>> (4195835 / 3145727) * 3145727 - 4195835
-1050108
>>> (4195835. / 3145727.) * 3145727. - 4195835.
0.0

请注意,您可以使用py3k或PEP238除法从整数中获得所需的行为。在

^{pr2}$

相关问题 更多 >

    热门问题