0xp0打印0.0(十六进制浮点数字)

Eng*_*uad 17 java

我只是想知道为什么这个编译?它是什么意思,因为它编译?

System.out.println(0xp0); // p?
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

0.0
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 11

JLS解释说:

HexadecimalFloatingPointLiteral:
    HexSignificand BinaryExponent FloatTypeSuffixopt

HexSignificand:
    HexNumeral
    HexNumeral .
    0 x HexDigitsopt . HexDigits
    0 X HexDigitsopt . HexDigits

BinaryExponent:
    BinaryExponentIndicator SignedInteger

BinaryExponentIndicator:one of
    p P
Run Code Online (Sandbox Code Playgroud)

基于以上所述,我希望.HexDigit在此之前强制执行p.


Jef*_*ter 9

这是一个浮点十六进制文字.

对于十六进制浮点文字,至少需要一个数字(在整数或小数部分中),并且指数是必需的,浮点类型后缀是可选的.指数由ASCII字母p或P表示,后跟可选的有符号整数.

请参阅此处的规范.