判断 lua 数字的有效性
2020-12-15 本文已影响0人
Lupino
在校准传感器的时候,使用不正确的校准方式, 在同一液体下进行校准。
这时候读取数字的时候出现一些奇怪的值,我们测了一整天,总共出现 4 种不可能的值 nan
, -nan
, inf
, -inf
。
当出现这些不可能出现的值的时候,设备会挂掉,我们需要去过滤掉这些数字。
给他们设置一个最大值,和最小值, 我设置为 1000000000
和 -10000000000
, 传感器是不可能测出来的值,而且可以让 lua 正常运行的值。
相应的我们会对数值进行预处理,代码如下:
function normal(data)
if data == nil then
return nil
end
local str_data = tostring(data)
if str_data == 'nan' or str_data == '-nan' then
return nil
end
if str_data == 'inf' then
return 100000000000
end
if str_data == '-inf' then
return -100000000000
end
return data
end
经过这个预处理,我们的设备稳定下来,没有在出现挂掉的情况。