【问题标题】:How arithmetic operators works for infinity value in JavaScript?算术运算符如何处理 JavaScript 中的无穷大值?
【发布时间】:2018-09-23 20:37:30
【问题描述】:

为什么算术运算符在 JavaScript 中对无穷大值的工作方式不同?

console.log(1.7976931348623157E+10308 + 1.7976931348623157E+10308)//Infinity
console.log(1.7976931348623157E+10308 * 1.7976931348623157E+10308)//Infinity
console.log(1.7976931348623157E+10308 - 1.7976931348623157E+10308)/NaN
console.log(1.7976931348623157E+10308 / 1.7976931348623157E+10308)/NaN

实际上1.7976931348623157E+10308 是一个Infinity 值。您可以在下面查看算术运算符如何返回 Infinity 值的结果。

console.log(Infinity + Infinity)//Infinity
console.log(Infinity * Infinity)//Infinity
console.log(Infinity - Infinity)/NaN
console.log(Infinity / Infinity)/NaN

所以我的问题是..

  • 为什么+* 运算符在Infinity 之间进行算术运算时返回Infinity 值?

  • 为什么-/ 运算符在Infinity 之间进行算术运算时返回Infinity 值?

【问题讨论】:

  • 因为它在数学上有意义?

标签: javascript typescript types ecmascript-6 operators


【解决方案1】:

因为规范明确规定它应该这样做。

+:

同一个符号的两个无穷大的和就是那个符号的无穷大。

*:

无穷大乘以无穷大。符号由上面已经说明的规则确定。

-:

两个相反符号的无穷大的和是NaN。

/:

一个无穷大除以一个无穷大得到 NaN。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2018-05-12
    相关资源
    最近更新 更多