gpt4 book ai didi

无法正确地将 uint64_t 转换为 double 。我缺少什么?

转载 作者:行者123 更新时间:2023-11-30 14:39:07 25 4
gpt4 key购买 nike

为了提供一些背景知识,我正在用 C 语言编写 Java 8 的 JVM,并尝试打印位于常量池中的 Double 值。

我有两个变量 uint32_t 分别代表 double 的高值和低值。我正在尝试打印这个 double 值,但我无法弄清楚我的代码出了什么问题。

我尝试打印所有值进行检查。

uint64_t high_arg, low_arg, double_value;

high_arg = cp[cpIndex-1].info.Double.high_bytes; // value is = 0x0000000040000000
low_arg = cp[cpIndex-1].info.Double.low_bytes; // value is = 0x0000000000000000
double_value = (high_arg << 32) | low_arg; // value is = 0x4000000000000000
printf("%f\n", (double)double_value);

它打印 double:4.61169e+18 但应该返回 2

我错过了什么?

最佳答案

正如 @JonathanLeffler 明智地指出的那样,解决方案是将表示 double 的整数转换为双指针,然后打印其内容。

printf("%f", *(double *)&double_value);

关于无法正确地将 uint64_t 转换为 double 。我缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243419/

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