加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:04:25 所属栏目:百科 来源:网络整理
导读:如果我除以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 / 0ZeroDivisionError: divided by 0 我知道0.0 / 0不是无限(用数学术语
如果我除以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无穷大?为什么划分整数会引发异常,但划分浮点数不会?

解决方法

在Ruby中,并非所有数字都是相同的(双关语).

对于浮点运算,十进制数(0.0,3.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)

整数(0,3)被视为整数.

NaN和Infinity(以及-Infinity)都是这种浮点数旨在处理的特殊情况,但整数不是 – 因此是错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读