判断 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

经过这个预处理,我们的设备稳定下来,没有在出现挂掉的情况。

上一篇下一篇

猜你喜欢

热点阅读