17

なぜこれがコンパイルされるのか疑問に思いますか?コンパイルされるので、それはどういう意味ですか?

System.out.println(0xp0); // p?

出力:

0.0
4

3 に答える 3

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

上記に基づいて、私は、しかし、.HexDigitの前に必須を期待しpます。

于 2012-07-25T14:11:35.457 に答える
9

これは浮動小数点の16進リテラルです。

16進浮動小数点リテラルの場合、少なくとも1桁(整数または小数部のいずれか)が必要であり、指数は必須であり、浮動小数点型の接尾辞はオプションです。指数は、ASCII文字のpまたはPと、それに続くオプションの符号付き整数で示されます。

こちらの仕様をご覧ください。

于 2012-07-25T14:12:39.997 に答える
0

参考までに、以下を手動で10進数に変換する方法を次に示します。

double hfpl = 0x1e.18p4;
System.out.println(hfpl); // 481.5

ここに画像の説明を入力してください

于 2016-02-17T20:41:42.907 に答える