如果以前曾经问过我,我很抱歉,但我找不到.
我想知道是否有办法计算用作计数器的单精度浮点数达到'最大值'的点(由于丢失而无法再添加其他值的点)精确).
例如,如果我不断添加0.1f到a,float我最终会达到值不会改变的点:
const float INCREMENT = 0.1f;
float value = INCREMENT;
float prevVal = 0.0f;
do {
prevVal = value;
value += INCREMENT;
} while (value != prevVal);
cout << value << endl;
Run Code Online (Sandbox Code Playgroud)
在海湾合作委员会这输出 2.09715e+06
有没有办法用数学方法计算不同的值INCREMENT?我认为理论上它应该是当指数部分float要求移位超过23位时,导致丢失尾数并简单地加0.