2019.09.22SHAREツイートシェアはてブLINEPocket足す、引く、掛ける、割るといった4つの計算の基本である四則計算は、小学生で習う基本です。そのため、Rubyをはじめとしたプログラムを学習する人の多くも、特に調べることなく使うことができます。大きな数や小さな数を扱う場合など、学校で習うことのない決まりがあるのです。ここでは、そんな四則計算や数値をRubyで扱う場合について、詳しく解説していきます。まとめRubyで計算するのは簡単プログラムではいろいろな計算を行いますが、科学計算や数学の難題のような計算を行うことは稀です。含めて、計算式を表現するには、演算記号(一般的に演算子と呼びます)が必要です。一般的には、「足し算は+」「引き算は-」「かけ算は×」「割り算は÷」「等しいは=」です。Rubyで計算するときも、ほぼ同じ記号を使っていますが、じつは意味が違っていたり、違う記号を使っていたりする場合もありますので、注意しなければいけません。以下が、Rubyの演算子(数値計算で使うものを代数演算子、代入に使うものは代入演算子と呼びます)です。四則計算だけじゃない単純な計算であれば、上述の演算子を使えば簡単に計算式を表現できます。複雑な計算や大きな数を扱う場合は、もう少し憶えておいた方が良いことがあります。計算の優先度いくつもの演算子を駆使した計算式の場合、演算子の優先度を考慮した書き方をしなければ、正しい結果は得られません。Rubyの演算子にも、一般的な計算の場合と同様に、以下のような計算(演算子が処理する)の優先度が決まっています。–(優先度:低)※同じ優先度の場合は、最初に現れた演算子から処理する。この優先度通りでは困る場合は、()で囲むことで、()内の計算を前に行うのは、通常の計算と同じです。確認するため、以下のプログラムを動かしてみましょう。b,"\n")数値の区切り経理や事務の人であれば、特になじみがあるかもしれませんが、大きな数値を書くとき、以下のように桁を表す「,」を挿入する場合があります。123,456,489残念ながら、Rubyではこの表現ができません(「,」に別の意味があるため)。そのため、Rubyで大きな桁の数を表現するとき、「,」の代わりに「_」を使うことができます。123_456_489ただし、これはあくまでも表記上の話で、プログラムは「_」なしの数値として認識しますので、プログラムからの出力には「_」は含まれていませんので、注意してください。123_456puts(a)123456123456計算するときの注意点ここまでの説明を踏まえて、「分」から「時間」に変換するプログラムを作成してみましょう。変換結果まず、プログラムを動かす前に、どんな結果になるかを予測してみましょう。最初の1行は、変換すべき分を設定しています。2〜3行めは、変換した後の結果を入れる箱です。変換処理はその後の2行です。この部分について、結果を予測してください。頭の中では、以下のような結果を予測するのではないでしょうか?1.5では、実行してみましょう。1なぜ、予測と違っているのかを説明していきましょう。小数についてポイントは割り算です。割り算は、(1)、(2)ともに実施しています。じつは、この割り算が、両方とも小数点以下切り捨てされた結果となっているのです。これはRubyの数値の扱い方に起因します。Rubyが変数に数値を格納されたとき、その数値が整数なら、その変数には整数しか入らなくなるのです。そのため、(1)の割り算(90÷60)の結果は1、(2)の割り算(30÷60)の結果が0となって、上述のような出力となるのです。これは、Rubyで数値を扱う上で間違えやすい点ですので、注意しましょう。小数を小数として扱わせるRubyに小数を扱わせるもっともシンプルな解決方法を説明しましょう。それは、最初の初期化の段階で、小数を格納することです。すれば、その変数は小数が格納されるものになりますので、計算結果も小数になることでしょう。ここには落とし穴があります。プログラムを改造して動作を確認してみましょう。結果は、2.0今度は、予測よりも値が大きくなってしまいました。プログラムの動きを見てみましょう。ここは、与えられた分数の中に、いくつの60分があるかを計算して、時間に変換しようとしています。(その後、余りを求める(2)で、分になる部分を割り出しています)つまり、90分÷60分は1余り30の商である1になることを期待しているわけです。実際の(1)の結果は、小数まで計算した結果になっています。これは、out_hourもin_minutsも小数を格納できる変数ですので、コンピュータが90分÷60分を計算した結果です。(1.5になっています)コンピュータは人が「どんなつもりでプログラムを書いているのか」など知りませんので、言われるがまま素直に計算したと言えます。(2)についても、同様です。(0.5になっています)そのため、結果として1.5+0.5の2.0が表示されるわけです。この場合の対策には、以下の2つの方法があります。・結果を意図に合わせて丸める(切り捨てる)・コンピュータに「整数の計算」だと教える今回は計算についてですので、前者について説明しましょう。人が切り捨てや四捨五入などをするときは、特になにかの記号で表現することもなく、頭の中で計算してしまいますが、コンピュータにはそんなことできません。そのため、プログラムで四捨五入をさせるためには、四捨五入のための処理を書いてあげなければいけません。Rubyでは、以下のメソッドを使うことで、切り捨てと切り上げ、四捨五入を表現します。