如何在java中写入十六进制浮点文字?

How do I write hexadeximal floating point literal in java?

对于数字 -5 x 10^-1-0.5,我可以写

-5E-1f-50E-2f-0.05E+1F

作为 "decimal floating point literal" 在 java.

如果"hexadecimal floating literal"中写的是同一个数字,我发现是

-0X32p-2f 这是错误的。此值为 -25.0。我将 50 视为 0x32 并提出了这个符号。

我如何学习用十六进制浮点文字写上述值 -5 x 10^-1

参见 Java 语言规范的 section 3.10.2

如果是十六进制浮点数,指数是二进制指数;它是 2 的幂,而不是十进制浮点文字中的 10 的幂。

所以0x32p-2f表示50次2的-2次方,而不是10次-2的次方。

表示 0.5 的十六进制 float 文字将是 0x1p-1f.

查看 Double.toHexString() 的文档。