【问题标题】:Lua file output: what is -1.#IO?Lua 文件输出:-1.#IO 是什么?
【发布时间】:2013-08-15 08:38:05
【问题描述】:

我正在使用 Lua 将数字打印到文件中,有时会显示 -1.#IO 而不是数字。什么意思?

有问题的代码在以下要点中。

https://gist.github.com/Nelarius/6247636

而有问题的数字在最底部:meanPrice。包含的值存储在商品表中,商品表稍后会将值记录到文件中。

【问题讨论】:

  • 我会说它是一个 NaN 值(浮点的特殊值)。甚至可能是负的 NaN(但它不会改变任何东西...... NaN 是 NaN)。说清楚:0.0 / 0.0
  • @xanatos 我同意你的建议,但不同意“NaN 就是 NaN”。有信号 NaN 和安静的 NaN。安静的 NaN 通过计算很好地传播。信号 NaN 的行为取决于系统。
  • 您能添加正在编写的代码吗?

标签: file lua numbers output


【解决方案1】:

在 Windows 上,浮点数的输出为 1.#INF 表示正无穷大,-1.#INF 表示负无穷大。浮点不定数是-1.#IND。但是-1.#IO 没有类似的表示形式。

最可能的原因是,您输出的数字具有固定的 3 位小数部分。对于小数点后 3 位 ..#INF.#IND 向上舍入为 .#IO

print(-1/0)
print(0/0)
print((string.format("%.3f", -1/0)))
print((string.format("%.3f", 0/0)))

在 windows 上,输出为:

-1.#INF
-1.#IND
-1.#IO
-1.#IO

【讨论】:

    【解决方案2】:

    正如评论者所说,这是一个无效的数字。它应该只在 Windows 上显示为这样。

    请参阅下面的链接。

    注意,链接指的是 (-)1.#IND 代表 NaN 和 (-)1.#INF 代表无穷大,我也得到了。 我会对您为生成#IO 所做的工作感兴趣。

    IEEE Floating point exceptions

    【讨论】:

    • 感谢您的链接。我使用提供的调试信息并打印了我的违规数字,看来我的 1.#IO 实际上是一个不确定的数字。所以我在某处进行了非法操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2012-01-19
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多