之前提過,Ruby是一個物件導向的程式語言,所以數字在Ruby的世界也是一個數字的物件。
既然是物件,那就有很多方便的方法可以使用。
.odd? → 是奇數?
.even? → 是偶數?
.zero? → 是0?
.nonzero? → 不是0?
.negative? → 是負數?
.positive? → 是正數?
.round → 四捨五入整數
.floor → 無條件捨去至整數
.ceil → 無條件進位至整數
.to_i → 無條件捨去至整數(跟.floor相同)
.abs → 取絕對值
.div → 回傳商數。例如 8÷2 =4..0,8.div(2) = 4
% → 回傳餘數。例如 8÷2 =4..0,8 % 2 = 0
.divmod → 回傳商數及餘數,回傳為一個陣列。例如 8÷3 =2..2, 8.divmod(3) = [2, 2]
通常整數間的除法,除不盡的部分會列在小數點後,但在Ruby的世界中,
若除數以及被除數均為整數的數,他們的結果會是整數,儘管他們除不盡,也只會列出整數的部分。
例如 15 ÷ 4 在Ruby內得到的結果是3。
但這個結果可能不是我們想要的,我們可以透過在除數或被除數其中之一加上小數點,就可以解決了。
上面有提到一些方法可以取到整數位:
.round → 四捨五入整數
.floor → 無條件捨去至整數
.ceil → 無條件進位至整數
其實round的default就是0,所以round 其實跟round(0)是一樣的意思,
當你想取整小數後第一位做四捨五入可以使用round(1),
而當你想取十位數做四捨五入時可以使用round(-1)。
在一開始Ruby的整數相除所得到的答案其實滿顛覆我原本的想法,
每一次寫的時候幾乎都會忘記,而導致我的答案跟我想要的有所不同,
但每次修改過後,都要再告訴自己要記得他們都是「數字物件」在做事情。