Ruby 教學 - 數字 (Numeric)
語法
Ruby 的數字型別許多衍生的類別,本文將針對整數和浮點數介紹。從整數的角度來看,它可以用以下四種寫法:
- 十進位制。
- 十六進位制,
0x
開頭。 - 八進位制,
0
開頭。 - 二進位制,
0b
開頭。
例如:
1 | puts 100 # 100 |
浮點數的部分則必須寫出小數點或科學記號表示:
1 | puts 1.23 # 1.23 |
尤其要注意的是除法的部分,如果前面的數字是整數,結果可能不如預期。
數值的範圍
整數的部分會自動轉換成大數型別,所以理論上是正負無窮大,浮點數的部分則介於 2.2250738585072014e-308
到 1.7976931348623157e+308
,可利用 Float::MIN
和 Float::MAX
取得常數。
特殊的數值
浮點數中包含三個特殊的數值:
- 正無窮大 (Infinity)
- 負無窮大 (-Infinity)
- 非數值 (NaN)
通常是除以零產生:
1 | puts 1.0 / 0 # Infinity |
可以分別利用 finite?
, infinite?
和 nan?
的函式來進行判斷:
1 | p (1.0 / 0).finite? # false |
轉型
同樣利用內建的函式進行轉型:
1 | p 1.1.to_s # "1.1" |
近似值
在電腦世界中的浮點數其實只是近似值,浮點數中的整數可能只是精確度到達一定程度而已,例如下面的例子:
1 | puts 0.1 + 0.7 # 0.7999999999999999 |
可以利用內建的 round
函式四捨五入小數點位數後在進行比較,例如以下是取小數點 4 位
1 | puts (0.1 + 0.7).round(4) == 0.8 # true |
更多函式
由於 Ruby 的物件導向設計,讓數字本身內建了更多函式,包含數學運算和迴圈控制,使用上更直覺,例如:
1 | puts 1.1.ceil # 2 |
更多的用法將在以後的文章進一步說明。
延伸閱讀
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment