【发布时间】:2015-05-10 00:05:27
【问题描述】:
我只是想从 FOR 循环中获取输出,其中初始化值 i 被迭代了 3 次以上。
remainder = 0.33F;
for (float i = 0; i < 1.00F; i += remainder)
{
Debug.Log(i);
}
这是给出输出,因为 i = 0、i = 0.33 和 i=0.66。为什么我没有得到 i = 0.99?
【问题讨论】:
-
那么有什么方法可以让我得到变量'i'的所有期望值?
-
我撤回了接近投票。一般来说,浮点数不准确会导致循环像这样失败。在这种情况下,余数 = 0.33,我认为这不可能发生。
-
少量语法更正,但工作正常...dotnetfiddle.net/JsU2Yu
-
我同意 Shar1er80,我也对其进行了测试,它工作正常,但由于 fp 不准确,如果
remainder = 1.0f/3.0f无法打印 0.99。 -
for (int idx = 0; idx < 3; idx++) { float i = remainder * idx / 3.0f; ... }