在JavaScript中,如果通过划分0
你Infinity
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] 删除。
我来说两句