取得方法
num = 3259
# 1000の位
place_1000 = (num / 1000) % 10
# 100の位
place_100 = (num / 100) % 10
# 10の位
place_10 = (num / 10) % 10
# 1の位
place_1 = (num / 1) % 10
puts place_1000
puts place_100
puts place_10
puts place_1
出力結果↓↓
3
2
5
9
解説
num = 3259
# 10の位
place_10 = (num / 10) % 10
=> 5
上記の計算式を電卓で打つと
(num / 10) => 325.9
325.9 % 10 => 5.9
答え 5.9
これがどうして、5が返り値として帰ってくるかというと、Rubyでは整数同士の計算は、整数が返り値として返ってくるからです。
そのため上記の計算結果により、十の位であるである5が返り値となるわけです。
Integerクラス
大前提として、integerクラスは整数のみを扱います。
もし小数点以下の数値が混ざっていた場合には、to_iメソッドを用いて整数のみを取得します。
num = 3259.67854
# 1000の位
place_1000 = (num.to_i / 1000) % 10
# 100の位
place_100 = (num.to_i / 100) % 10
# 10の位
place_10 = (num.to_i / 10) % 10
# 1の位
place_1 = (num.to_i / 1) % 10
puts place_1000
puts place_100
puts place_10
puts place_1
出力結果↓↓
3
2
5
9
digitsメソッド
数値を1桁ずつ配列にして返すメソッド
これを使うことでも、取得可能です。
参考:https://docs.ruby-lang.org/ja/latest/method/Integer/i/digits.html
num= 3259
num.digits => [9,5,2,3]#配列を取得
# 1000の位
puts num.digits[3]
# 100の位
puts num.digits[2]
# 10の位
puts num.digits[1]
# 1の位
puts num.digits[0]
出力結果↓↓
3
2
5
9
以上です。