2017-09-11 12 views
4

私はluaを初めて使用しています。私はこれを使ってシミュレーションプログラムfemmのいくつかのタスクを自動化しています。私のスクリプトに私はforループのこのタイプを持っている:Lua forループはすべての繰り返しを行いません

for i=0.1,0.3,0.1 
do 
    print(i) 
end 

問題は、それが0.1から0.2にのみ反復処理である(それは私に入らない= 0.3).Iは0.1から0.4まで、例えば、他の値(と試み)正常に動作します。なぜこの奇妙な行動が起こるのですか?これは浮動小数点数の問題ですか?

+0

0.3が0.3 – moteus

+0

と等しくないかもしれそれを整数として宣言されていないため、これは(私は持っていません前にluaを使った?)ループ変数に整数値のみを使うべきですか? – user19955

+0

'i = 0.1、0.3 + 1e-9,0.1' –

答えて

3

これは0.1から0.1を3回加算すると0.3よりわずかに大きい数値が生成されるためです。したがって、ループは目標エンド番号に達する前に停止します。

これは、ループ反復に浮動小数点値を使用する危険性があります。代わりに、整数のループを書き直して、あなたの必要な数を取得する除算実行します。

for j = 1,3 
do 
    i = j/10 
    print(i) 
end 

Demo.

関連する問題