我是 c 的新手。所以当我写一个小游戏演示时,我遇到了一个非常奇怪的问题。
void testC()
{
float a = 825300160;
float b = a + 0.1;
assert(a != b);
}
上面的assert语句不能通过。很奇怪。
我的环境是mac os ml。海合会 4.2.1
最佳答案
float
的小数部分由 23 位组成。您需要 30 位来表示 825300160,因此该数字的次要部分将被丢弃。添加 .1
没有什么区别 - 您需要添加大约 32
才能更改数字:
float a = 825300160;
float b = a + 31.5;
assert(a != b); // No change is detected
float c = a + 32;
assert(a != c); // Change is detected
关于c - 当我向它添加 0.1 时, float 不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557036/