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



我正在看这篇文章,想知道10e1是整数字面量还是浮点字面量。

我知道100是一个整数字面值。如果我写成10e1会有什么不同吗?

当我在这里(7)或这里(5.1)检查规范时,没有所谓的"浮点文字"。这只是MDN中另一个错误的文档吗?知道浮点文字指的是什么吗?

总结:

  1. 10010e1是否属于同一类文字?如果是,是哪一个?
  2. 有所谓的"浮点文字"吗?

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

不是为了结果,不是。但是要传输和解析又多了一个字符(所以最好使用1e2:-D),而且会影响可读性。不是每个人都熟悉指数。

规范中没有所谓的"浮点文字"。这只是MDN中另一个错误的文档吗?

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

10010e1是否属于同一类字面量?如果是,是哪一个?

是的,它们都是数字字面值。JS不区分带有和不带有小数部分的数字,它们都具有相同的浮点类型。十进制数字字面量只有一种语法,小数和指数是可选的。

知道浮点文字指的是什么吗?

它的意思是"浮点数的(数字)字面量",正如"整数字面量"的意思是"表示整数的浮点数的(数字)字面量"。

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

根据规范,10010e1都是"decimaliteral",而100也有资格为"DecimalIntegerLiteral"

正如@Thilo在评论中提到的那样,这些都不会对开发人员产生任何真正的影响

按照IEEE-754的内部表示也应相同。

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

最新更新