Lua检查数字/值是否为nan

时间:2016-06-10 17:06:30

标签: lua nan

我编写了一个程序来在一些计算后打印一个矩阵,我得到了nan的所有元素的输出。我想在矩阵的第一个元素变为for后立即打破nan循环以理解问题。我怎样才能做到这一点?在终端中,我打印了包含a的矩阵nan作为所有元素,并键入a[1][1]=="nan"a[{{1},{1}}]=="nan"两者都返回false。他们为什么不返回false而我应该使用什么声明?

3 个答案:

答案 0 :(得分:8)

您的测试失败是因为您要将数字与字符串"nan"进行比较。

如果您确定这是一个数字,最简单的方法是:

if a[1][1] ~= a[1][1] then

因为根据IEEE 754,nan值被认为不等于任何值,包括它自己。

答案 1 :(得分:0)

两种解决方案:

local n = 0/0 -- nan

-- first solution
if ( tostring(n) == "nan" ) then
   print("is nan!!")
end

-- second solution
if (n ~= n) then
   print("is nan!!")
end

答案 2 :(得分:-3)

试试这个:

for x = 1, x2 do          -- x2 depends on how big you matrix is.
  for y = 1, y2 do        -- y2 the same as x2
    -- some code depending on how your program works
    if a[x][y] == nan then
      print( "X:" .. x .. ", Y:" .. y )
      break
    end
  end
end

PS :( nan == nan)是真的