小编Cpl*_*egg的帖子

查找浮点计数器的最大值

如果以前曾经问过我,我很抱歉,但我找不到.

我想知道是否有办法计算用作计数器的单精度浮点数达到'最大值'的点(由于丢失而无法再添加其他值的点)精确).

例如,如果我不断添加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.

c++ floating-point floating-accuracy

8
推荐指数
1
解决办法
168
查看次数

标签 统计

c++ ×1

floating-accuracy ×1

floating-point ×1