gpt4 book ai didi

c - ( float )类型转换不起作用

转载 作者:行者123 更新时间:2023-12-04 11:37:36 27 4
gpt4 key购买 nike

我',正在尝试这个简单的代码。它显示了前 10 个不能用 float 表示的整数:

int main(){
int i, cont=0;
float f;
double di, df;
for(i=10000000, f=i; i<INT_MAX; i++, f=i, df=f, di=((float)i)){
if(i!=f){
printf("i=%d f=%.2f df=%.2lf di=%.2lf\n", i, f, df, di);
if(cont++==10) return 0;
}
}
return 1;
}

di 是一个double 变量,但是我把它设置为(float)i,所以它应该等于df,但实际上不是。

例如,数字16777217被fdf表示为16777216,但是di仍然是16777217,忽略 ( float ) 类型转换。

这怎么可能?

**我正在使用这个:gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3

最佳答案

这篇文章解释了发生了什么:

http://www.exploringbinary.com/when-floats-dont-behave-like-floats/

基本上,额外的精度可能会存储在机器上以用于不同的表达式评估,从而使相等的 float 不相等。

关于c - ( float )类型转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880767/

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