FOR循环迭代不起作用

时间:2015-05-10 00:05:27

标签: c# for-loop unity3d

我只是试图从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?

1 个答案:

答案 0 :(得分:1)

Because float point arithmetic isn't precise, and shouldn't expected to be.

这个特殊问题的精确解释将包括如何浮动C#VM中存储在内存中的内容,以及Microsoft编译器和Mono编译器之间的不同之处,以及如果你在iOS之前构建不同的结果,在IL2CPP之后。

但是,我不认为你需要所有这些信息,说实话,我太懒了,不能深入挖掘这些信息。正如一般的经验法则,依靠浮点运算是不可靠和不精确的。