gpt4 book ai didi

ruby - 使用默认值拯救 DivisionByZero 在 ruby​​ 中返回 NaN?

转载 作者:数据小太阳 更新时间:2023-10-29 07:21:10 27 4
gpt4 key购买 nike

我希望 begin rescue 将 ratio 设置为零,但它被设置为 NaN,这在我拯救错误以提供默认值时非常令人沮丧。

  ratio = begin
0.0 / 0.0
rescue ZeroDivisionError
0
end

ratio = 0 if ratio.nan?

我想去掉的代码是 ratio = 0 if ratio.nan? 为什么需要它?

编辑新代码如下:

  ratio = bet_money_amount_cents.to_f / total_amount.to_f
ratio.nan? ? 0 : ratio

最佳答案

因为 0.0/0.0 没有引发错误(ZeroDivisionError),你正在考虑。

ZeroDivisionError 尝试将整数除以 0 时引发

42 / 0
#=> ZeroDivisionError: divided by 0

注意只有除以一个精确的0才会引发异常:

42 /  0.0 #=> Float::INFINITY
42 / -0.0 #=> -Float::INFINITY
0 / 0.0 #=> NaN

我会这样写:

ratio = bet_money_amount_cents.to_f / total_amount.to_f
ratio = 0 if ratio.nan?

关于ruby - 使用默认值拯救 DivisionByZero 在 ruby​​ 中返回 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com