我只是在 mac pro 上测试 float in c 的最大表示。 我的程序看起来像这样。 程序有乘和加两种方式。 #包括
int main(void) {
float a;
a = 0;
int index = 0;
while(1) {
a++;
a = a +10000000000; // 1, **adding** **resulting (1)**
//a = a* 5; 2, **multiplying** **resulting (2)**
printf("%f, %d\n",a,idex);
}
}
结果 (1) 它一直增加到某个点,它只显示相同的结果,如下所示 288230376151711744.000000。
结果 (2) 除了inf
,它甚至什么都没显示谁能解释为什么会发生不同的情况..?
最佳答案
对于非常大的 float 值,两个连续 float 之间的差距大于 20000000000。一旦达到这一点,添加 10000000000 将无法更改该值。
乘法引起的变化与被乘的值成比例,因此数字不断增加直到溢出到无穷大。
关于c - 为什么在增加 float 值时它会给我 "inf"和相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073833/