Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 有没有办法检测NaN和-NaN?_Lua_Numbers_Nan - Fatal编程技术网

Lua 有没有办法检测NaN和-NaN?

Lua 有没有办法检测NaN和-NaN?,lua,numbers,nan,Lua,Numbers,Nan,我想将lua数字保存为string并正确处理NaN大小写 检测任何NaN都很容易,x~=x 然而,我发现的唯一一种检测方法是NaN或-NaN是使用tostring(x)='NaN'。有更好的方法吗?与不可移植的tostring(x)='nan'相比,您可以根据需要与实际的tostring调用进行比较:tostring(x)==tostring(0/0)或tostring(x)==tostring(-(0/0))。如果需要进行多次比较,可以将tostring的结果保存并重新使用。存在两个以上的NA

我想将lua数字保存为string并正确处理
NaN
大小写

检测任何NaN都很容易,
x~=x


然而,我发现的唯一一种检测方法是
NaN
-NaN
是使用
tostring(x)='NaN'
。有更好的方法吗?

与不可移植的
tostring(x)='nan'
相比,您可以根据需要与实际的
tostring
调用进行比较:
tostring(x)==tostring(0/0)
tostring(x)==tostring(-(0/0))
。如果需要进行多次比较,可以将
tostring
的结果保存并重新使用。

存在两个以上的NAN(实际上,根据IEEE-754,存在
2^52-1
NAN)。
它们的
tostring
-ed表示依赖于平台。
这是一个如何获得三个不同NAN的示例(我使用的是使用Visual Studio构建的Lua 5.3):


因此,不区分NaN的不同变体更为正确。

如何得到-NaN?@lhf
0/0
-NaN
-(0/0)
NaN
(如
tostring
所述)。
string.pack(“>d”,你的“NaN”):byte()>127
@EgorSkriptunoff没有函数
string.pack
@val-此函数来自Lua 5.3。要获得相关答案,请使用与您的Lua版本相对应的标签标记您的问题。
n = string.unpack(">d", string.pack(">d", 0/0):sub(1, -2).."@")
print(0/0, -(0/0), n) -->  -1.#IND   1.#QNAN   -1.#QNAN