除以无穷大

DA.*_*DA. 1 javascript infinity

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

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

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

Gre*_*reg 8

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

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


wal*_*orn 6

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

为什么危险?那么,对于初学者来说,根据IEEE 754:

1/0 = Inf
1/-0 = -Inf
Run Code Online (Sandbox Code Playgroud)

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

Inf = -Inf
Run Code Online (Sandbox Code Playgroud)

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