【问题标题】:floating point division by zero浮点除以零
【发布时间】:2013-03-08 05:20:21
【问题描述】:

我原以为下面的代码会引发错误,但它却返回 NaN。这种行为在任何地方都有描述吗?为什么它与整数除以零不同?

0.0 / 0.0 # => NaN

编辑:在这种情况下我需要返回零,所以我打算

(x / y rescue 0)

但这不起作用。怎么办?

【问题讨论】:

标签: ruby


【解决方案1】:
res = x/y
res = 0 unless res.finite?

finite? 如果浮点数是有效的浮点数(不是无限的,并且 nan? 为假),则返回 true。

【讨论】:

    【解决方案2】:

    你可以这样做

    x == 0 and y == 0 ? 0 : x/y
    

    x.nonzero? || y.nonzero? ? x/y : 0
    

    【讨论】:

    • 是的,当然,谢谢。我正在寻找一种方法来确保我的(任意)表达式不会评估为NaN。是否在 ruby​​ 中检查 NaN
    • @akonsu 有一个.nan? 方法,但它不适用于整数,仅适用于浮点数
    • 我也很好奇。 +1 以平局。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2012-03-10
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多