为什么我的999999999的浮动变成10000000000?

zha*_*ang 2 c floating-point

当我执行以下代码时,它有一个问题:

float number = 999999999;
printf("%lf", number);
Run Code Online (Sandbox Code Playgroud)

结果是10000000000而不是999999999.

为什么不呢999999999

chu*_*ica 8

典型float可以准确地表示大约2 32个不同的数字,如1234.0和-0.125. 999999999不是其中之一. 10000000000.0f是最接近的float选择.

在赋值期间发生了近似

float number = 999999999;  // Really assigned 10000000000.0f
Run Code Online (Sandbox Code Playgroud)