Evg*_*nev 4 ruby integer-division divide-by-zero
如果我除以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
Run Code Online (Sandbox Code Playgroud)
我知道0.0/0不是无限(用数学术语),而3.0/0是为什么那么为什么不是3/0无穷大?为什么划分整数会引发异常,但划分浮点数不会?
在Ruby中,并非所有数字都是相同的(双关语).
十进制数(0.0,3.0)遵循IEEE 754-2008浮点运算标准:
该标准定义了算术格式:二进制和十进制浮点数据集,包括有限数(包括带符号的零和次正规数),无穷大和特殊的"非数字"值(NaN)
整数(0,3)被视为整数.
两者NaN和Infinity(以及-Infinity)都是这种浮点数设计用于处理的特殊情况,但整数不是 - 因此是错误.
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |