在javascript数学运算中的NAN和Infinity

时间:2016-10-18 10:57:00

标签: javascript math

$ echo '[{"name": "John", "age": 56}, {"name": "Mary", "age": 67}]' > file1.json $ echo '[{"age": 56, "name": "John"}, {"name": "Mary", "age": 61}]' > file2.json $ diff -u --color \ <(jq -cS . file1.json | js-beautify -f -) \ <(jq -cS . file2.json | js-beautify -f -) --- /dev/fd/63 2016-10-18 13:03:59.397451598 +0200 +++ /dev/fd/62 2016-10-18 13:03:59.397451598 +0200 @@ -2,6 +2,6 @@ "age": 56, "name": "John Smith" }, { - "age": 67, + "age": 61, "name": "Mary Stuart" }] 输出0 / 0 NaN输出1 / 0

javascript如何评估第一个数学运算?

3 个答案:

答案 0 :(得分:2)

根据spec

0/0输出NaN 因为

  

零归零导致NaN;被任何人划分为零   其他有限值结果为零,符号由   规则已经在上面说过。

1/0输出Infinity 因为

  

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

第7节和第8节 12.6.3.2应用/运算符(无序列表)

答案 1 :(得分:0)

在javascript中,0 / 01 / 0表示IEEE754浮点类型参数的划分。

这个浮点规范非常具体地说明了当分母为零的分区被评估时必须发生的事情。它返回

  1. +无穷大,如果分子为正
  2. - 如果分子为负,则为无穷
  3. 如果分子也为零则为NaN
  4. 因此0 / 0是NaN,而1 / 0是+无限。

    请注意,在其他语言(例如C,C ++和Java)中,您的除法将在整数算术中进行,并且未定义整数除零。

答案 2 :(得分:0)

0/0是数学无法执行的表达式。这就是为什么它是Not_A_Number。