【发布时间】:2017-08-01 01:32:52
【问题描述】:
我正在学习java认证。我对java文字很好奇。 我知道可以这样做:
int i = 0xAA;
long l = 0xAAL;
这对于浮点变量也是可能的:
double d = 123d;
float f = 123f;
所以我在逻辑上认为这些示例同样适用于十六进制。就像我可以为长文字添加 L 一样,我可以添加 'd' 或 'f' 但逻辑有缺陷,因为 'F' 和 'D' 是有效的十六进制值。
不可能这样做:
double d = 0xAAAAAAAAAAAAAAAAAAd;
这只是 Java 不允许,还是有一种我不知道的简单方法?
【问题讨论】:
-
你了解 IEEE-754 浮点格式吗?您是否研究过 Java 语言参考文档?你期望
0xaaaaaaaaaaaaaaaa的浮点值是多少? -
@JimGarrison:OP 说“不可能”,这表明他们确实尝试过并发现它给出了错误。在我开始回答这个问题之前,我自己并不知道 Java 中的浮点十六进制文字。
-
@JonSkeet 这很有趣....
-
@JimGarrison 是的,我研究过 java 文档,但我没有尝试这个具体案例,因为考试可能会问任何可能的问题,我也必须了解这一点。我有浮点格式的概念,但感谢 IEEE 参考。