Lua for循环不能执行所有迭代

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

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

问题是它只从0.1迭代到0.2(它没有进入i=0.3)。我尝试过其他值(例如从0.1到0.4),它可以正常工作。为什么会出现这种奇怪的行为? 这是浮点数问题吗?

点赞
用户335858
用户335858

将浮点数用于循环迭代的危险

这种情况的原因是将0.1添加到0.1三次会产生略微大于0.3的数字。因此,在达到目标结束数字之前,循环就停止了。

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

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

演示

2017-09-11 11:24:34