Lua for 循环不进行所有迭代

use*_*955 5 iteration lua loops for-loop

我是 lua 的新手,我正在使用它来自动化模拟程序 femm 中的一些任务。在我的脚本中,我有这种类型的 for 循环:

for i=0.1,0.3,0.1
do
  print(i)
end
Run Code Online (Sandbox Code Playgroud)

问题是它只从 0.1 迭代到 0.2(它没有输入 i=0.3)。我尝试了其他值(例如从 0.1 到 0.4)并且它工作正常。为什么会发生这种奇怪的行为?这是浮点数问题吗?

das*_*ght 3

发生这种情况是因为 0.1 与 0.1 相加 3 次会产生一个略大于 0.3 的数字。因此,循环在到达目标结束编号之前停止。

这就是使用浮点值进行循环迭代的危险。相反,用整数重写循环,并执行除法以获得所需的数字:

for j = 1,3
do
    i = j/10
    print(i)
end
Run Code Online (Sandbox Code Playgroud)

演示。