我只是试图从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?
答案 0 :(得分:1)
Because float point arithmetic isn't precise, and shouldn't expected to be.
这个特殊问题的精确解释将包括如何浮动C#VM中存储在内存中的内容,以及Microsoft编译器和Mono编译器之间的不同之处,以及如果你在iOS之前构建不同的结果,在IL2CPP之后。
但是,我不认为你需要所有这些信息,说实话,我太懒了,不能深入挖掘这些信息。正如一般的经验法则,依靠浮点运算是不可靠和不精确的。