gpt4 book ai didi

ruby - 为什么在 Ruby 0.0/0、3.0/0 和 3/0 中表现不同?

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

如果我除以 0,我会得到 ZeroDivisionError、Infinity 或 NaN,具体取决于除以什么。

ruby-1.9.2-p180 :018 > 0.0 / 0
=> NaN

ruby-1.9.2-p180 :020 > 3.0 / 0
=> Infinity

ruby-1.9.2-p180 :021 > 3 / 0
ZeroDivisionError: divided by 0

我知道 0.0/0 不是无穷大(在数学术语中),而 3.0/0 是,但为什么 3/0 不是无穷大?为什么除以整数会抛出异常而除以 float 却不会?

最佳答案

在 Ruby 中,并非所有的数字都是平等的(双关语)。

十进制数(0.03.0)在IEEE 754-2008 standard 之后对于浮点运算:

The standard defines arithmetic formats: sets of binary and decimal floating-point data, which consist of finite numbers (including signed zeros and subnormal numbers), infinities, and special "not a number" values (NaNs)

整数(03)被视为整数。

NaNInfinity(以及-Infinity)都是此类 float 旨在处理的特殊情况,但整数不是-- 因此错误。

关于ruby - 为什么在 Ruby 0.0/0、3.0/0 和 3/0 中表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726615/

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