gpt4 book ai didi

使用 union 将 double 转换为 int?

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:15 24 4
gpt4 key购买 nike

假设我有一个 union 定义为:

typedef union{
double d;
int i;
} dtoi;

如果我想将一个double类型转换成一个int类型,我有以下函数:

int doubleToInt(double d){
dtoi dToI;
dToI.d = d;
return dToI.i;
}

后来我有另一个函数将它转换回 double:

double intToDouble(dtoi dToI){
return dToI.d;
}

这行得通吗?现在我想我得到了错误的双倍值(value)。我想我不太明白 union 和将 union 作为参数跨函数和模块传递是如何工作的。

最佳答案

没有。这是行不通的。一方面,int 通常是 32 位,double 通常是 64 位。另一方面,浮点值基本上被分成位域,有这么多位保存尾数,这么多人拿着指数,一个人拿着符号。另一方面,整数只是数字的 base-2 表示。他们的位只是排列不一样。

要将 double 'd' 正确转换为 int,请尝试 int i = (int)d; 并反过来:double d = (double)i; .这些实际上将值从一种格式转换为另一种格式。 union 只是重新解释现有位。

关于使用 union 将 double 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796424/

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