C# FOR循环迭代不起作用
我只是尝试从FOR循环中获取输出,其中初始化值C# FOR循环迭代不起作用,c#,for-loop,unity3d,C#,For Loop,Unity3d,我只是尝试从FOR循环中获取输出,其中初始化值I迭代3次 remainder = 0.33F; for (float i = 0; i < 1.00F; i += remainder) { Debug.Log(i); } 余数=0.33F; 对于(浮点数i=0;i
I
迭代3次
remainder = 0.33F;
for (float i = 0; i < 1.00F; i += remainder)
{
Debug.Log(i);
}
余数=0.33F;
对于(浮点数i=0;i<1.00F;i+=余数)
{
调试日志(i);
}
这就是输出,i=0,i=0.33和i=0.66。为什么我得不到I=0.99?
对这个特殊问题的精确解释将包括如何在C#VM中浮动存储在内存中的a的详细信息,以及Microsoft编译器和Mono编译器之间的区别,以及如果在iOS上构建,在IL2CPP之前和之后如何获得不同的结果
然而,我不认为你需要所有这些信息,老实说,我太懒了,无法深入挖掘。就像一般的经验法则一样,依靠浮点运算是不可靠和不精确的。那么,怎样做才能得到变量“I”的所有期望值?我收回了投票结果。通常,浮点不准确会导致循环像这样失败。在这种情况下,余数=0.33,我认为这是不可能发生的。轻微的语法修正,但效果很好。。。我同意Shar1er80,我也测试了它,它工作得很好,尽管由于fp不准确,如果
余数=1.0f/3.0f
,它无法打印0.99