我在添加两个浮点数时遇到问题。
代码如下:
float a = 30000.0f;
float b = 4499722832.0f;
printf("%f\n", a+b);
为什么输出结果是 450002816.000000? (正确的应该是 450002832。)
最佳答案
浮点数在 C 中没有精确表示 - 请参阅 http://en.wikipedia.org/wiki/Floating_point#IEEE_754:_floating_point_in_modern_computers 和 http://en.wikipedia.org/wiki/Single_precision ,因此使用浮点数进行计算只能给出近似结果。
这对于较大的值尤其明显,因为可能的差异可以表示为值的百分比。在添加/减去两个值的情况下,两者(以及结果)的精度都会变差。
关于c - 为什么在 C 中两个 float 的相加是不正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334233/