gpt4 book ai didi

javascript - 从零除法无限

转载 作者:行者123 更新时间:2023-11-30 10:19:51 24 4
gpt4 key购买 nike

在 JavaScript 中,如果除以 0,您将得到 Infinity

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

这暗示 Infinity 是一个数字(当然,没有争论)。

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

然而,该定义是针对算术的,我知道在编程中它可以产生无穷大,不是数字,或者只是抛出异常。

那么为什么要抛出 Infinity 呢?有人对此有解释吗?

最佳答案

首先,导致 Infinity 不是由于幕后的一些疯狂数学。 The spec states that :

Division of a non-zero finite value by a zero results in a signed infinity. The sign is determined by the rule already stated above.

规范作者的逻辑是这样的:

2/1 = 2。很简单。

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

...等等:

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

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

[0] “如果量级太大而无法表示,则运算会溢出;结果是适当符号的无穷大。”

关于javascript - 从零除法无限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21893525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com