关于ruby:浮点除零

floating point division by zero

我本来以为下面的代码会抛出一个错误,但它却返回NaN。这种行为在任何地方都有描述吗?为什么它不同于整数除以零?

1
0.0 / 0.0 # => NaN

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

1
(x / y rescue 0)

但这不起作用。如何做到这一点?


1
2
res = x/y
res = 0 unless res.finite?

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


你可以做点什么

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

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