Ruby

【Ruby】整数から任意の桁の数字を取得する方法

取得方法

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

以上です。

  • この記事を書いた人

コウダイ

文系・ノースキル・完全未経験・アラサー・地方住み・残業100時間超えの社畜ホテルマンから都内上場IT企業のフルリモートWebエンジニアに転職した人。

都内上場IT企業に勤務するWebエンジニア5年目|プログラミングスクールのテックキャンプ公式アンバサダー|新卒で手取り18万の地方ホテルマン6年→プログラミングを900時間勉強→転職活動100社以上応募→アラサー未経験から7ヶ月でフルリモートのWebエンジニアに転職し年収100万円UP|33歳2児のパパ|ブログ歴4年→月間6,000PV|エンジニア転職ノウハウ、プログラミング、Web制作、副業での稼ぎ方など、「時間や場所に縛られずに稼ぐ」方法を発信しています。

-Ruby