我对Lua很新。测试时我发现了#INF
/ #IND
。但是,我找不到一个很好的参考资料来解释它。
什么是#INF
,#IND
和类似内容(例如否定关键字)以及如何生成和使用它们?
答案 0 :(得分:8)
#INF
是无限的,#IND
是NaN。给它一个测试:
print(1/0)
print(0/0)
我的Windows机器上的输出:
1.#INF
-1.#IND
由于ANSI C中没有这些标准表示,您可能会得到不同的结果。例如:
inf
-nan
答案 1 :(得分:6)
扩大@YuHao已经很好的答案了。
Lua在将数字转换为字符串时几乎没有,因为它严重依赖于底层的C库实现。实际上,Lua print
implementation调用Lua tostring
,后者(在一系列其他调用之后)使用lua_number2str
macro,C sprintf
定义为{{3}}。因此,最后您可以看到C实现使用的无穷大和NaN的任何表示形式(根据编译Lua使用哪个编译器以及应用程序链接到哪个C运行库,这可能会有所不同)。
答案 2 :(得分:2)
local function isINF(value)
return value == math.huge or value == -math.huge
end
local function isNAN(value)
return value ~= value
end