【发布时间】:2013-09-18 02:19:02
【问题描述】:
这个数学方程式...
(4195835 / 3145727) * 3145727 - 4195835
应该等同于0。根据软件测试(第二版)一书,
如果您得到其他任何东西,您有一个旧的 Intel Pentium CPU,带有一个 浮点除法 buga 软件错误烧入计算机芯片 并在制造过程中反复复制。
使用 Python 2.7,我在命令行中得到 -1050108。
使用 Node 我得到0,就像我在计算器中一样
对此有更深入的解释吗?这最初是由于 1994 年迪斯尼的狮子王视频游戏中的一个错误而提出的。我想我会在一些事情上测试这个等式。
【问题讨论】:
-
请注意,仅仅因为数学表达式等于 0 并不意味着使用浮点完成的相同计算必须等于 0,这不是错误,这就是标准浮点计算的工作方式。你听起来好像你的书没有很清楚地解释这一点。
-
@PascalCuoq 我相信我的标题有一些与问题相关的书的信息,并且有人修改了这个标题。无论哪种方式,这本书都没有试图解释浮点数,或者只是分享“臭名昭著的软件错误案例研究”。我只是进行了计算并尝试了自己,当时结果很奇怪,直到它显然是四舍五入。所以,这本书没有理由解释这些细节,也不应该以本章为基础。一本非常好的书,值得一读。
标签: python math python-2.7 command-line floating-point