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