我正在看这篇文章,想知道10e1
是整数字面量还是浮点字面量。
我知道100
是一个整数字面值。如果我写成10e1
会有什么不同吗?
当我在这里(7)或这里(5.1)检查规范时,没有所谓的"浮点文字"。这只是MDN中另一个错误的文档吗?知道浮点文字指的是什么吗?
总结:
-
100
和10e1
是否属于同一类文字?如果是,是哪一个? - 有所谓的"浮点文字"吗?
如果我写
10e1
而不是100
,会有什么不同吗?
不是为了结果,不是。但是要传输和解析又多了一个字符(所以最好使用1e2
:-D),而且会影响可读性。不是每个人都熟悉指数。
规范中没有所谓的"浮点文字"。这只是MDN中另一个错误的文档吗?
MDN指南肯定是可疑的,在一篇关于JS类型的文章中将一个章节命名为"Integers"至少是令人困惑的。
100
和10e1
是否属于同一类字面量?如果是,是哪一个?
是的,它们都是数字字面值。JS不区分带有和不带有小数部分的数字,它们都具有相同的浮点类型。十进制数字字面量只有一种语法,小数和指数是可选的。
知道浮点文字指的是什么吗?
它的意思是"浮点数的(数字)字面量",正如"整数字面量"的意思是"表示整数的浮点数的(数字)字面量"。
DecimalLiteral::
DecimalIntegerLiteral.DecimalDigits(opt) ExponentPart(opt)
.DecimalDigits ExponentPart(opt)
DecimalIntegerLiteral ExponentPart(opt)
DecimalIntegerLiteral::
0
NonZeroDigitDecimalDigitsopt
根据规范,100
和10e1
都是"decimaliteral",而100
也有资格为"DecimalIntegerLiteral"
正如@Thilo在评论中提到的那样,这些都不会对开发人员产生任何真正的影响
按照IEEE-754的内部表示也应相同。
Status Sign [1] Exponent [11] Significand [52]
Normal 0 (+) 10000000101 (+6) 1.1001000000000000000000000000000000000000000000000000 (1.5625)