• WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

WEBCAMP【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でプログラミングを学びたい方!
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WEBCAMP PRO転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアへ3ヶ月で転職する為のスクールです!
12月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
11月生は満員となっております。12月生募集に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

足す、引く、掛ける、割るといった4つの計算の基本である四則計算は、小学生で習う基本です。

そのため、Rubyをはじめとしたプログラムを学習する人の多くも、特に調べることなく使うことができます。

しかし、大きな数や小さな数を扱う場合など、学校で習うことのない決まりがあるのです。

ここでは、そんな四則計算や数値をRubyで扱う場合について、詳しく解説していきます。

Rubyで計算するのは簡単

プログラムではいろいろな計算を行いますが、科学計算や数学の難題のような計算を行うことは稀です。

ここでは、そんな「日常生活でも普通に使っている」計算をRubyでどう表現するのかを紹介していきます。

演算子

四則計算を含めて、計算式を表現するには、演算記号(一般的に演算子と呼びます)が必要です。

一般的には、「足し算は+」「引き算は-」「かけ算は×」「割り算は÷」「等しいは=」です。

Rubyで計算するときも、ほぼ同じ記号を使っていますが、じつは意味が違っていたり、違う記号を使っていたりする場合もありますので、注意しなければいけません。

以下が、Rubyの演算子(数値計算で使うものを代数演算子、代入に使うものは代入演算子と呼びます)です。
※aとb、cはある数値もしくは変数

+ 正の数を表す(+a)
加算を表す(a+b)
- 負の数を表す(-a)
減算を表す(a-b)
* 乗算を表す(a*b : a × b)
/ 除算の商を表す(a/b : a ÷ b)
% 整数の除算の余りを表す(a%b : a割るbの余り)
** 累乗を表す(a**b : aのb乗)
= 代入を表す(a = b + c : 変数aにb + cの結果を格納する)
+= 自己代入を表す(a += b : a = a + b)
+以外の演算子でも可能

時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
2018-01-26 13:03
今回の記事では、WebCampに1ヶ月間通い、未経験からエンジニアとして転職した星野さんにお話を伺いました。 <プロフィール> 星野 智洋 さん(25) 学生時代は日本大学芸術学部...

四則計算だけじゃない

単純な計算であれば、上述の演算子を使えば簡単に計算式を表現できます。しかし、複雑な計算や大きな数を扱う場合は、もう少し憶えておいた方が良いことがあります。

計算の優先度

いくつもの演算子を駆使した計算式の場合、演算子の優先度を考慮した書き方をしなければ、正しい結果は得られません。

Rubyの演算子にも、一般的な計算の場合と同様に、以下のような計算(演算子が処理する)の優先度が決まっています。

(優先度:高)
↑   **
* , / , %
↓   + , -
(優先度:低)

※同じ優先度の場合は、最初に現れた演算子から処理する。

また、この優先度通りでは困る場合は、()で囲むことで、()内の計算を前に行うのは、通常の計算と同じです。

確認するため、以下のプログラムを動かしてみましょう。

# 計算式
a = 1.0 + 3.0 / 3.0
b = (1.0 + 3.0) / 3.0

# 結果表示
print("aは、", a,"\n")
print("bは、", b,"\n")

数値の区切り

経理や事務の人であれば、特になじみがあるかもしれませんが、大きな数値を書くとき、以下のように桁を表す「,」を挿入する場合があります。

123,456,489

残念ながら、Rubyではこの表現ができません(「,」に別の意味があるため)。

そのため、Rubyで大きな桁の数を表現するとき、「,」の代わりに「_」を使うことができます。

123_456_489

ただし、これはあくまでも表記上の話で、プログラムは「_」なしの数値として認識しますので、プログラムからの出力には「_」は含まれていませんので、注意してください。

a = 123456
puts(a)

a = 123_456
puts(a)
123456
123456

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

計算するときの注意点

ここまでの説明を踏まえて、「分」から「時間」に変換するプログラムを作成してみましょう。

in_minuts = 90 # 時間に変換したい分
out_hour = 0   # 変換した時間部分
out_minuts = 0 # 変換した分部分

out_hour = in_minuts / 60          # 時間をとるため、60で割った商を得る……(1)
out_minutes = (in_minuts % 60) / 60  # 余りの分を時間に変換する……(2)

print(out_hour + out_minutes)  # 変換結果

まず、プログラムを動かす前に、どんな結果になるかを予測してみましょう。

最初の1行は、変換すべき分を設定しています。

2〜3行めは、変換した後の結果を入れる箱です。

変換処理はその後の2行です。この部分について、結果を予測してください。

頭の中では、以下のような結果を予測するのではないでしょうか?

1.5

では、実行してみましょう。

1

なぜ、予測と違っているのかを説明していきましょう。

小数について

ポイントは割り算です。

割り算は、(1)、(2)ともに実施しています。

じつは、この割り算が、両方とも小数点以下切り捨てされた結果となっているのです。

これはRubyの数値の扱い方に起因します。

Rubyが変数に数値を格納されたとき、その数値が整数なら、その変数には整数しか入らなくなるのです。そのため、(1)の割り算(90÷60)の結果は1、(2)の割り算(30÷60)の結果が0となって、上述のような出力となるのです。

これは、Rubyで数値を扱う上で間違えやすい点ですので、注意しましょう。

小数を小数として扱わせる

Rubyに小数を扱わせるもっともシンプルな解決方法を説明しましょう。

それは、最初の初期化の段階で、小数を格納することです。

そうすれば、その変数は小数が格納されるものになりますので、計算結果も小数になることでしょう。

しかし、ここには落とし穴があります。

まずは、プログラムを改造して動作を確認してみましょう。

in_minuts = 90.0 # 時間に変換したい分
out_hour = 0.0   # 変換した時間部分
out_minuts = 0.0 # 変換した分部分

out_hour = in_minuts / 60          # 時間をとるため、60で割った商を得る……(1)
out_minutes = (in_minuts % 60) / 60  # 余りの分を時間に変換する……(2)

print(out_hour + out_minutes)  # 変換結果

結果は、

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入門説明書】変数と定数について解説」で、詳しく説明します。

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

切り捨て、切り上げ、四捨五入

人が切り捨てや四捨五入などをするときは、特になにかの記号で表現することもなく、頭の中で計算してしまいますが、コンピュータにはそんなことできません。

そのため、プログラムで四捨五入をさせるためには、四捨五入のための処理を書いてあげなければいけません。

Rubyでは、以下のメソッドを使うことで、切り捨てと切り上げ、四捨五入を表現します。

メソッド 説明
floor 小数部を切り捨てる。
負の数の場合は、数値を小さくする側に丸めます(-1.5→-2)
ceil 小数部を切り上げる。
負の数の場合は、数値を大きくする側に丸めます(-1.5→-1)
round 指定した桁までの四捨五入を行います。
1:小数部第二位を四捨五入、0:小数部第一位の四捨五入、-1:整数部第一位を四捨五入

これらを使って、先ほどの「分から時間に変換するプログラム」を修正します。

in_minuts = 90.0 # 時間に変換したい分
out_hour = 0.0   # 変換した時間部分
out_minuts = 0.0 # 変換した分部分

out_hour = in_minuts / 60          # 時間をとるため、60で割った商を得る……(1)

out_hour = out_hour.floor          # 商だけ残すために小数点以下を切り捨てる……(3)

out_minutes = (in_minuts % 60) / 60  # 余りの分を取得する……(2)

print(out_hour + out_minutes)

具体的に修正(追加)したのは、(3)だけです。

どういった動きになるか、しっかりと考えた上で、実行して確認しましょう。

まとめ

コンピュータは電子計算機ですので、計算は得意です。しかし、正しくプログラムを組まなければ、作り手の意図した結果を出せません。

Rubyは比較的感覚的にプログラムを作れますが、ここに書いてある演算子や小数の扱いなどには気をつけて、プログラムを作っていきましょう。

・Rubyの演算子は+,-,*,/,%,**がある
・%は割り算の余りを求める演算子
・**は累乗を求める演算子
・/は商を得る演算子だが、意識せずに使うと、できる限り計算した小数が得られる
・切り捨てと切り上げ、四捨五入はメソッドを使って求める
・コンピュータは、プログラムに書いてある通りにしか動かない

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

12月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
11月受入枠は満員となっております。12月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

 

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Rubyの関連記事
  • 【Ruby入門説明書】rescueについて解説
  • 【Ruby入門説明書】jsonについて解説
  • 【Ruby入門説明書】csvについて解説
  • 【Ruby入門説明書】mapについて解説
  • 【Ruby入門説明書】gemsについて解説
  • 【Ruby入門説明書】ruby sliceについて解説
おすすめの記事