gpt4 book ai didi

c++ - 如何在不丢失精度的情况下将 float 转换为 double(均以 IEEE-754 表示形式存储)?

转载 作者:可可西里 更新时间:2023-11-01 18:33:26 32 4
gpt4 key购买 nike

我的意思是,例如,我有以下以 IEEE-754 单精度编码的数字:

"0100 0001 1011 1110 1100 1100 1100 1100"  (approximately 23.85 in decimal)

上面的二进制数是用文字串存储的。

问题是,如何将这个字符串转换为 IEEE-754 double 表示(有点像下面的,但值不一样),而不损失精度?

"0100 0000 0011 0111 1101 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1010"

相同的数字以 IEEE-754 double 编码。

我曾尝试使用以下算法先将第一个字符串转换回十进制数,但它会失去精度。

num in decimal = (sign) * (1 + frac * 2^(-23)) * 2^(exp - 127)

我在 Windows 平台上使用 Qt C++ Framework。

编辑:我必须道歉,也许我没有清楚地表达问题。我的意思是我不知道真实值 23.85,我只得到第一个字符串,我想将它转换为 double 表示而不损失精度。

最佳答案

嗯:保留符号位,重写指数(减去旧偏差,加上新偏差),并在右边用零填充尾数......

(正如@Mark 所说,您必须分别处理一些特殊情况,即当偏置指数为零或最大值时。)

关于c++ - 如何在不丢失精度的情况下将 float 转换为 double(均以 IEEE-754 表示形式存储)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466745/

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