【发布时间】:2014-01-11 09:48:00
【问题描述】:
我想使用十六进制符号直接初始化double。我知道这适用于int 和Long,如以下示例所示(结果值始终正确):
int i = 0x10000000; // 268435456
Long li = 0x1000000000000000L; // 1152921504606846976
另一方面,如果我尝试对双打做同样的事情,它可以工作,但只能在 4 字节的范围内(查看代码示例中的 cmets)。对于第二个无效的表示法,Netbeans IDE 一直告诉我这是一个整数值,因此太大了:
double d1 = 0x10000000; // 2.68435456E8
double d2 = 0x1000000000000000; // not valid
float-values 在 4 字节范围内工作得很好:
float f1 = 0x10000000; // 2.68435456E8
- 有没有办法用十六进制表示法直接写入/初始化双精度数?
-
能够用十六进制表示法编写
Long的唯一原因是此表示法中没有“L”(与“f”表示浮点数或无效的“.”相反)用于标记双打)? - 为什么限制为 4 字节?为什么它适用于
double而不适用于Long?
感谢您的建议和建议。
【问题讨论】: