gpt4 book ai didi

java - 关于原始初始化的十六进制表示法的问题

转载 作者:行者123 更新时间:2023-11-30 08:27:03 25 4
gpt4 key购买 nike

我想用十六进制表示法直接初始化一个double。我知道这适用于 intLong,如下例所示(结果值总是正确的):

    int i   = 0x10000000;           // 268435456
Long li = 0x1000000000000000L; // 1152921504606846976

另一方面,如果我尝试对 double 执行相同的操作,它可以工作,但只能在 4 字节的范围内(查看代码示例中的注释)。对于第二个无效的表示法,Netbeans IDE 一直告诉我这是一个整数值,因此太大了:

    double d1 = 0x10000000;         // 2.68435456E8
double d2 = 0x1000000000000000; // not valid

float - 值在 4 字节范围内工作:

float f1 = 0x10000000;              // 2.68435456E8

  1. 有没有一种方法可以直接用十六进制表示法编写/初始化 double?
  2. 能够用十六进制表示法编写 Long 的唯一原因是此表示法中没有“L”(与“f”相反float 或无效的“.”用于标记 double )?
  3. 为什么限制为 4 字节?为什么它适用于 double 而不是 Long

感谢您的指教和建议。

最佳答案

Java 从 1.5 开始支持浮点十六进制字面值

double d = 0x1f.1p1;

关于java - 关于原始初始化的十六进制表示法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21060805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com