gpt4 book ai didi

c - float 操作如何在 c 中工作?大数字奇怪的结果

转载 作者:太空宇宙 更新时间:2023-11-04 07:28:49 25 4
gpt4 key购买 nike

下面的代码给出了一些奇怪的结果:

#include <stdio.h>
#include <float.h>

int main()
{
float t = 1.0;
float res;
float myFltMax = 340282346638528859.0;
printf("FLT_MAX %f\n", FLT_MAX);

res = FLT_MAX - t;
printf("res %f\n", res);

res = myFltMax - t;
printf("res myFltMax %f\n", res);

return 1;

}

结果是:

FLT_MAX 340282346638528859811704183484516925440.000000
res 340282346638528859811704183484516925440.000000
res myFltMax 340282356122255360.000000

因此,如果我从 FLT_MAX 中减去 1,结果是相同的,如果我从其他大 float 中减去 1,结果大于初始数字。

我使用的是 gcc 4.7.2 版。谢谢。

最佳答案

如果您从 myFltMax 中减去 1,您得到的差值不会大于初始数字。你得到相同的数字。同样打印 myFltMax,您会看到它是 340282356122255360 而不是 340282346638528859

Proof .

基本上,编译器会将您的 340282346638528859 舍入到可以用浮点类型表示的最接近的值,而该值恰好是 340282356122255360

关于c - float 操作如何在 c 中工作?大数字奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782988/

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