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

时间:2018-09-11 11:41:06

标签: lua numbers nan

我想将lua号保存到字符串中并正确处理//First remove the previous set attribute $('select').click(function() { $(this).find('option:selected').removeAttr('selected'); }); //Set the newly selected option's attribute to selected $('select').on('change', function() { $("option:selected").attr('selected','selected'); }); 大小写。

检测任何NaN很容易,NaN

但是,我发现要检测的唯一方法是使用x ~= x还是NaN。有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用实际的tostring(x) == 'nan'调用:tostringtostring(x) == tostring(0/0)来代替比较,而不是不可移植的tostring(x) == tostring(-(0/0))。如果您需要进行多个比较,则可以保存tostring的结果并重复使用。

答案 1 :(得分:1)

存在两个以上的NaN(实际上,根据IEEE-754,有2^52-1个NaN)。
他们的tostring版表示形式取决于平台。
这是一个如何获取三个不同的NaN的示例(我使用的是Visual Studio内置的Lua 5.3):

n = string.unpack(">d", string.pack(">d", 0/0):sub(1, -2).."@")
print(0/0, -(0/0), n) -->  -1.#IND   1.#QNAN   -1.#QNAN

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