Tar*_*rek 0 c++ floating-point floating-accuracy
有时我会在c ++中使用浮点数并且只使用数字作为for的倍数,比如0.1,作为for循环的增量,循环迭代器的实际数字不是0.1的倍数,但是其他地方添加了不可预测的数字或减去1 ^ -17数量级的微小数字.我怎么能避免这种情况?
不要迭代浮点数.
问题是0.1不能用浮点精确表示.所以相反,你应该做的事情如下:
for (int i = 0; i < N; i++)
{
float f = i * 0.1f;
...
}
Run Code Online (Sandbox Code Playgroud)