使用“0”(零)作为整数文字中的前缀会将其基数更改为八进制。这就是为什么
System.out.println(010);
将打印8
。但是使用“F”作为后缀
System.out.println(010F);
会使它浮动丢失八进制基数(返回十进制)并打印10.0
。
010F
和10F
之间有什么区别吗?使用浮点数时,“0”前缀是否有任何意义?
答案 0 :(得分:9)
来自Java语言规范,Floating Point literals
FloatingPointLiteral:
- DecimalFloatingPointLiteral
- HexadecimalFloatingPointLiteral
DecimalFloatingPointLiteral:
- 数字。 [数字] [ExponentPart] [FloatTypeSuffix]
- 。数字[ExponentPart] [FloatTypeSuffix]
- Digits ExponentPart [FloatTypeSuffix]
- Digits [ExponentPart] FloatTypeSuffix
其中Digits
数字:
- 数字
- 数字 [DigitsAndUnderscores] 数字
数字:
- 0
- NonZeroDigit
DigitsAndUnderscores:
- DigitOrUnderscore {DigitOrUnderscore}
DigitOrUnderscore:
- 位
- _
下划线
- _ {_}
对于浮点文字,您可以包含任意数量的前导0
。
我在JLS中找不到任何解释为什么允许这样做的东西,但我可以想象它简化了解析。
答案 1 :(得分:6)
八进制表示法仅用于整数,不用于浮点数。这不是Java特有的。所以额外的0没有效果(除了让人类读者感到困惑)。
答案 2 :(得分:3)
只能在Java中以八进制格式(Base-8)表示整数文字。
浮点数可以仅以十进制(或)十六进制形式表示。