毎回0.1ずつ増加する double 値でMath.floor関数を使用すると、奇妙なバグが発生します。
0.1 の増分でのみ発生し、値 5 から開始します。
例: math.floor(4) は4を返しますが、math.floor(5) は4を返します!!!
次の簡単なコードを使用して、自分で試すことができます。
for i=3,7,0.1 do
print("val : "..i.." floor : "..math.floor(i))
end
上記のコードの結果は次のとおりです。
Corona Simulator[1494:707] val : 3 floor : 3
Corona Simulator[1494:707] val : 3.1 floor : 3
Corona Simulator[1494:707] val : 3.2 floor : 3
Corona Simulator[1494:707] val : 3.3 floor : 3
Corona Simulator[1494:707] val : 3.4 floor : 3
Corona Simulator[1494:707] val : 3.5 floor : 3
Corona Simulator[1494:707] val : 3.6 floor : 3
Corona Simulator[1494:707] val : 3.7 floor : 3
Corona Simulator[1494:707] val : 3.8 floor : 3
Corona Simulator[1494:707] val : 3.9 floor : 3
Corona Simulator[1494:707] val : 4 floor : 4
Corona Simulator[1494:707] val : 4.1 floor : 4
Corona Simulator[1494:707] val : 4.2 floor : 4
Corona Simulator[1494:707] val : 4.3 floor : 4
Corona Simulator[1494:707] val : 4.4 floor : 4
Corona Simulator[1494:707] val : 4.5 floor : 4
Corona Simulator[1494:707] val : 4.6 floor : 4
Corona Simulator[1494:707] val : 4.7 floor : 4
Corona Simulator[1494:707] val : 4.8 floor : 4
Corona Simulator[1494:707] val : 4.9 floor : 4
Corona Simulator[1494:707] val : 5 floor : 4
Corona Simulator[1494:707] val : 5.1 floor : 5
Corona Simulator[1494:707] val : 5.2 floor : 5
Corona Simulator[1494:707] val : 5.3 floor : 5
Corona Simulator[1494:707] val : 5.4 floor : 5
Corona Simulator[1494:707] val : 5.5 floor : 5
Corona Simulator[1494:707] val : 5.6 floor : 5
Corona Simulator[1494:707] val : 5.7 floor : 5
Corona Simulator[1494:707] val : 5.8 floor : 5
Corona Simulator[1494:707] val : 5.9 floor : 5
Corona Simulator[1494:707] val : 6 floor : 5
Corona Simulator[1494:707] val : 6.1 floor : 6
Corona Simulator[1494:707] val : 6.2 floor : 6
Corona Simulator[1494:707] val : 6.3 floor : 6
Corona Simulator[1494:707] val : 6.4 floor : 6
Corona Simulator[1494:707] val : 6.5 floor : 6
Corona Simulator[1494:707] val : 6.6 floor : 6
Corona Simulator[1494:707] val : 6.7 floor : 6
Corona Simulator[1494:707] val : 6.8 floor : 6
Corona Simulator[1494:707] val : 6.9 floor : 6
Corona Simulator[1494:707] val : 7 floor : 6
バグのある値の結果にモジュロ 1を適用すると、次の結果が得られます: 0.99999999999999