从零除到无限

斯特林弓箭手

在JavaScript中,如果通过划分0Infinity

typeof Infinity; //number
isNaN(Infinity); //false

这暗示着Infinity是一个数字(当然,那里没有参数)。

我了解到,除以零的任何东西都是不确定的形式,没有任何价值,不是数字。

但是,该定义是用于算术的,我知道在编程中它可以产生Infinity(不是数字)或抛出异常。

那么为什么要扔无限?有人对此有解释吗?

小猫

首先,结果Infinity并不是由于幕后的疯狂数学。规范指出

将非零有限值除以零会导致有符号无穷大。该标志由上述规则确定。

规范作者的逻辑遵循以下原则:

2/1 = 2很简单。

2/0.5 = 4将分母减半会使结果加倍。

...等等:

2/0.0000000000000005 = 4e+1随着分母趋向于零,结果不断增长。因此,规范作者决定将零除以默认为Infinity,以及其他任何导致数字太大而无法表示JavaScript [0]的操作。(而不是某些准数字状态或除以零的异常)。

您可以在Google的V8引擎的代码中看到这一点:https : //github.com/v8/v8/blob/bd8c70f5fc9c57eeee478ed36f933d3139ee221a/src/hydrogen-instructions.cc#L4063

[0]“如果幅度太大而无法表示,则操作会溢出;结果是适当符号的无穷大。”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章