为什么在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:
整数(0,3)被视为整数. NaN和Infinity(以及-Infinity)都是这种浮点数旨在处理的特殊情况,但整数不是 – 因此是错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |