目的
例えば、1,234という数値。この数値の各桁の和は、1 + 2 + 3 + 4で、答えは10になります。
これをRubyを使用して出力する方法が二通りあります。
演算子を使用する方法
一つは演算子を使用し、それぞれの桁の値を抽出し、全て足す方法です。
num = 1234
thousand = (num / 1000) % 10 # => 1
hundred = (num / 100) % 10 # => 2
ten = (num / 10) % 10 # => 3
one = num % 10 # => 4
answer = thousand + hundred + ten + one
p answer
# => 10
使用した演算子
| 演算子 | 意味 |
|---|---|
| + | 加算(足し算) |
| / | 除算(割り算) |
| % | 剰余(余り) |
解説
まず、一の位の値を出す方法。
1234という数値の中の4だけが欲しい時、
1234から4を取り出す方法は、1234を10で割れば、その余りが一の位の4になります。
1234 ÷ 10 = 123.4 ===> 123 ・・・4
この余りを求める方法は、演算子の%を使用すれば可能です。
1234 % 10
# => 4
%は、商の整数部分を取り除き、余りのみを返してくれます。
次に、二桁以上の位の値を出す方法。
十の位、百の位、それ以上の位の値を求めるには、求めたい値の位を一の位に持って来ることができれば、上記の一の位の値を出す方法で求めることができます。
つまり、1234の
- 十の位が欲しい時、 =>
123.4=小数点以下を切り捨て=>123 - 百の位が欲しい時、 =>
12.34=小数点以下を切り捨て=>12 - 千の位が欲しい時、 =>
1.234=小数点以下を切り捨て=>1
このようにするには数値を求めたい桁の位で割れば可能です。
# 十の位
1234 ÷ 10 = 123.4
# 百の位
1234 ÷ 100 = 12.34
# 千の位
1234 ÷ 1000 = 1.234
演算子の除算は/を使用します。
# 十の位
1234 / 10
# => 123
# 百の位
1234 / 100
# => 12
# 千の位
1234 / 1000
# => 1
/は商の小数点以下を取り除き、整数部分のみ返してくれます。
これに上記の一の位の値を出す方法を組み合わせると、求めたい位の値を出すことができます。
# 百の位
(1234 / 100) % 10
# => 3
あとは計算で出た値を全て足すだけです。
メソッドを使用する方法
もう一つはメソッドを使用し、数値を配列にして合わせる方法です。
num = 1234
answer = num.digits.sum
p answer
# => 10
使用したメソッド
| メソッド | 役割 |
|---|---|
| digits | 数値を位ごとにバラバラにする |
| sum | 配列の要素を合計する |
解説
まず、digitsメソッドを使用して、位ごとに分割します。
digitsメソッドは位ごとに分割し、一の位から並べた配列を返してくれます。
1234.digits
# => [4, 3, 2, 1]
そして、sumメソッドで配列の各要素を足します。
[4, 3, 2, 1].sum
# => 10
最後に
各桁の値を出すのみであれば演算子で計算をすれば良いのですが、和を求める場合はメソッドを使用した方が簡単です。
ご覧いただき、ありがとうございました。