iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
自我挑戰組

自我挑戰Ruby系列 第 8

Day 8 - 數字

  • 分享至 

  • xImage
  •  

數字物件

之前提過,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。

https://ithelp.ithome.com.tw/upload/images/20230923/20162251cThVXAXM0C.png

但這個結果可能不是我們想要的,我們可以透過在除數或被除數其中之一加上小數點,就可以解決了。

https://ithelp.ithome.com.tw/upload/images/20230923/20162251IKPSciCdnA.png

取值

上面有提到一些方法可以取到整數位:

.round → 四捨五入整數

.floor → 無條件捨去至整數

.ceil → 無條件進位至整數

其實round的default就是0,所以round 其實跟round(0)是一樣的意思,

當你想取整小數後第一位做四捨五入可以使用round(1),

而當你想取十位數做四捨五入時可以使用round(-1)。

https://ithelp.ithome.com.tw/upload/images/20230923/20162251HabHgHbKWH.png

Day 8 結語

在一開始Ruby的整數相除所得到的答案其實滿顛覆我原本的想法,

每一次寫的時候幾乎都會忘記,而導致我的答案跟我想要的有所不同,

但每次修改過後,都要再告訴自己要記得他們都是「數字物件」在做事情。


上一篇
Day 7 - 變數定義
下一篇
Day 9 - 字串1
系列文
自我挑戰Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言