`10e1`是整数字面值还是浮点字面值?

时间:2016-10-05 08:28:33

标签: javascript literals

我正在研究this article并想知道10e1是整数文字还是浮点文字。

我知道100是一个整数文字。如果我写10e1代替它会有什么不同吗?

当我签入spec here(7)或here(5.1)时,没有任何名为“Floating Point Literal”的内容。这只是MDN中另一个不正确的文档吗?知道浮点数字法指的是什么吗?

总结:

  1. 10010e1是否属于同一类文字?如果是,哪个?
  2. 有没有名为“浮点文字”的内容?

2 个答案:

答案 0 :(得分:2)

  

如果我写10e1而不是100,会有什么不同吗?

不是结果,不是。但是转发和解析它是一个字符(因此最好使用1e2 :- D),这会影响可读性。不是每个人都熟悉指数。

  

在规范中没有任何名为" Floating Point Literal"。这只是MDN中另一个不正确的文档吗?

MDN指南肯定是可疑的,命名一个部分"整数"在一篇关于JS类型的文章中至少令人困惑。

  

10010e1是否属于同一类文字?如果是的话,哪个?

是的,他们都是数字文字。 JS不区分具有和不具有小数部分的数字,它们都具有相同的浮点类型。十进制数字文字只有一个语法,小数位数和指数是可选的。

  

知道Floating Point Literal所指的是什么吗?

它的意思是"(数字)字面值为浮点数",就像" Integer literal"表示"(数字)字面表示一个表示整数的浮点数"。

答案 1 :(得分:1)

DecimalLiteral::
    DecimalIntegerLiteral.DecimalDigits(opt) ExponentPart(opt)
    .DecimalDigits ExponentPart(opt)
    DecimalIntegerLiteral ExponentPart(opt)
DecimalIntegerLiteral::
    0
    NonZeroDigitDecimalDigitsopt

根据规范,10010e1都是“DecimalLiteral”,而100也有资格成为“DecimalIntegerLiteral”

这些都不会对@Thilo

的评论中提到的开发人员产生任何真正的影响

根据IEEE-754的内部表示也应该是相同的。

Status  Sign [1]    Exponent [11]      Significand [52]
Normal  0 (+)       10000000101 (+6)   1.1001000000000000000000000000000000000000000000000000 (1.5625)