【问题标题】:Lua for loop does not do all iterationsLua for 循环不会进行所有迭代
【发布时间】:2017-09-11 19:24:34
【问题描述】:

我是 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)并且它工作正常。为什么会发生这种奇怪的行为?这是浮点数问题吗?

【问题讨论】:

  • 0.3 可能不等于 0.3
  • 这是不是因为它没有声明为整数(我之前没有使用过lua)?我应该只对循环变量使用整数值吗?
  • 试试i=0.1, 0.3+1e-9, 0.1
  • 听起来你may need a primer在浮点运算中

标签: loops for-loop lua iteration


【解决方案1】:

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

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

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

Demo.

【讨论】:

    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多