除以无穷大

时间:2009-10-23 14:53:20

标签: javascript infinity

我不是数学家,但我认为除以无穷大要么是数学不好,要么至少是不切实际的。

我只花了半个小时调试我在Firefox中工作得很好的javascript但在IE中给我一个错误。我终于意识到这是因为在某些情况下,我要求IE除以无穷大。

所以,我解决了这个问题,但我很好奇为什么Firefox可以用它。不可否认,这可能更像是一个数学问题,而不是编程。 ;)

3 个答案:

答案 0 :(得分:8)

除以无穷大是好的 - 它是零。

除非你将无穷大除以无穷大,这是未定义的(一般至少)

答案 1 :(得分:6)

我认为这是IE中的一个错误。根据IEEE数学规则,n / Inf = 0(对于n!= 0)。因此,如果IE对此嗤之以鼻,这是IE中的一个问题。另一方面,在普通的数学运算中使用Inf是有问题的,如果你的代码首先不依赖它,那么你会更好。

为什么危险?嗯,首先,根据IEEE 754:

1/0 = Inf
1/-0 = -Inf

但我们知道0 = -0,因此

Inf = -Inf

这显然是不受欢迎的。 IEEE并不意味着无论如何都要使Inf成为普通数字。 Inf和NaN存在于计算机中的浮点算术,其固有的有限精度和溢出问题类似于普通世界的算术,其中,最简单的例子,实数的集合在加法时是封闭的(添加两个实数总是导致另一个真实的数字)。如果你使用有限精度浮点数,那么你会得到添加两个数字会导致溢出的情况。为了避免将此视为错误条件,IEEE引入了两个额外的符号,Inf和NaN,以及一组针对其行为的规则。现在,数学运算的结果总是数字,或Inf或NaN,结果是否有意义留给用户。

答案 2 :(得分:-1)

从数学角度来看,将数字除以无穷大是完全合理的。它是一个无限接近零的数字,实际上没有达到零。

从软件的角度来看,这要困难得多,因为无穷大不是一个可离散表示的值。我的猜测是你的行为差异是基于设计决策。

在Firefox中,他们可能选择返回零值,因为出于所有实际目的,此结果将适用于您所需的内容。

另一方面,在IE浏览器中,开发人员似乎有意识地决定不允许您执行他们知道无法给出单独答案的计算。