iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
自我挑戰組

富士大顆系列 第 7

vol.07 如紅寶石般閃耀的您-Ruby 學習筆記 (三) 數字 methods 20+ 選!

  • 分享至 

  • xImage
  •  

你好,我是富士大顆 Aiko
繼前篇的 字串 methods 今天來介紹數字的 methods 們


以下是常用的 20+ 個 Ruby 數字方法:

數學計算(聽起來好廢話?可是下面有 methods 是跟順序有關!)

abs:絕對值, absolute 的縮寫

num = -5
puts num.abs
#5

sqrt(n):n 開根號。

num = 25
puts Math.sqrt(num)
#5.0

pow(n):n 次方。

num = 2
puts num.pow(3)
#8

divmod(n):返回除法的商(n)和餘數。

puts = 10.divmod(3)
#3
#1

取整數

ceil:天花板,將數字無條件進位取整數

num = 4.5
puts num.ceil
#5

floor:地板,無條件捨去取整數

num = 4.5
puts num.floor
#4

round:四捨五入到整數。

num = 4.5
puts num.round
#5

數字 array methods

max:找出最大值。

numbers = [9, 5, 2, 7]
puts numbers.max
#9

min:找出最小值。

numbers = [9, 5, 2, 7]
puts numbers.min
#2

sort:小到大排列。(也可以用在字串 array abcd 哦)

numbers = [9, 5, 2, 7]
puts numbers.sort
#[2, 5, 7, 9]

reverse:大到小排列

numbers = [9, 5, 2, 7]
puts numbers.reverse
#[9, 7, 5, 2]

sum:總和

numbers = [9, 5, 2, 7]
puts numbers.sum
#23

reduce(n):自定義累積邏輯,並使用初始值 n(這邊幫我畫三顆星星!!)

numbers = [9, 5, 2, 7]
puts numbers.reduce(0) { |acc, cv| acc + cv }
#初始值 0 然後把陣列內的數字進行互加:0+9-> 0+9+5-> 9+5+2-> 9+5+2+7
#23

所以reducesum 有什麼差別?

雖然兩者都可以計算總數,但是 ```reduce``` 提供初始值 n,因此在使用上加大了彈性

整數換小數點、小數點換整數、數字變字串

to_f:將整數換為小數點。

num = 3
puts num.to_f
#3.0

to_i:將小數點或字串轉換為整數。會是 floor 的無條件進位哦

num = "5.6"
puts num.to_i
#5

to_s:將數字轉換為字串。

num = 5566
puts num.to_s
#"5566"

檢查,return boolean

even?:檢查數字是否為偶數。

num = 6
puts num.even?
#true

odd?:檢查數字是否為奇數。

num = 7
puts num.odd?
#true

between?:檢查數字是否在指定的範圍內。

num = 3
puts num.between?(1, 5)
#true

跟順序有關

succ:返回數字的下一個數字。succeed

num = 5
puts num.succ
#6

pred:返回數字的前一個數字。predecessor

num = 5
puts num.pred
#4

其他

times:執行指定次數操作。數字雖然可以超大,可是會耗費大量資源與時間

3.times do
  puts "Hello"
end
# Hello
# Hello
# Hello

clamp(a, b):將數字限制在 a 到 b 內。一般來說 a < b

num = 8
puts num.clamp(1, 5)
#5 #雖然數字是 8 但 1~5 之間最大是 5 最接近 8
num = -5
puts num.clamp(3, 4)
#3

差點要來不及,什麼事情我們明天再說!!!


上一篇
vol.06 如紅寶石般閃耀的您-Ruby 學習筆記 (二) 字串 methods 20+ 選!
下一篇
vol.08 如紅寶石般閃耀的您-Ruby 學習筆記 (四) array methods 20+ 選!
系列文
富士大顆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言