
10. 計算方法を知る
※無料で読めます
プログラミング未経験でも大丈夫?
java での計算の方法は?
算術演算子とは?
初めてjava を学習してみようという方/javaでコーディングできるけどやり方がいまいちわからない方に向けた記事です。
アジェンダ
それでは、いつものように私なりの言葉で、読んでいて眠くなることがないように、タイトルなども工夫していきます。
今回のゴール
・計算の処理が作れる
1. 昔日の経験は無駄にはならない
算数とほとんど同じです。
・足し算(加算)は、「+」
・引き算(減算)は、「-」
int sum = 1 + 2;
int substraction = 1 - 2;
・掛け算(乗算)は、「*」
・割り算(除算)は、「/」
・割り算の余り(剰余)は、「%」
int multiplication = 1 * 2;
int division = 6 / 2;
int surplus = 7 % 2;
「× に近いので、*」「分数と同じく、/」であれば、覚えやすいでしょうか・・。
2. 一段ずつ進む方が結果的に早い
コーディングをしていく中で、
「1番目、2番目、3番目…」ということをよくやります。
int i = 1;
// 処理
i = i + 1;
// 処理
i = i + 1;
// 処理
この 「+ 1」というのを省略することができるのです。
さっそく書き方を見ていきましょう。上記と同じことをします。
int i = 1;
// 処理
i++;
// 処理
i++;
// 処理
「++」は、その値に「+1」をするというもの処理になります。
逆に、「-1」をしたい場合は、「--」を使えばOKです。
さいごに
計算自体は、算数と同じなので簡単です、ね・・?
次回、「条件分岐」に関してまとめたいと思いますので、よろしければご覧になってください。
以降の内容に関して
・今回の記事のまとめを書いています
※必須ではないけれど知っておいた方が良い知識も添えています
・具体的な使い方を、コードも添えて補足説明しています
※ 今回は有料とはしません。いつも有料の部分がこうなっているんだな・・と雰囲気を知ってもらえればと思います。
まとめ
・足し算をする場合は、+
⇒ 「int num = 1 + 2;」なら、num は 「3」
・引き算をする場合は、-
⇒ 「int num = 1 - 2;」なら、num は 「-1」
・掛け算をする場合は、*
⇒ 「int num = 2 * 3;」なら、num は 「6」
・割り算をする場合は、/
⇒ 「int num = 5 / 2;」なら、num は 「2」
・余りを求める場合は、%
⇒ 「int num = 5 % 2;」なら、num は 「1」
・++ はインクリメント(+1すること)
⇒ 変数の前につけたら、「+1 してからその変数の値を参照する」
⇒ 変数の後につけたら、「変数の値を参照してから+1する」
・-- はデクリメント(-1すること)
⇒ 変数の前につけたら、「-1 してからその変数の値を参照する」
⇒ 変数の後につけたら、「変数の値を参照してから-1する」
・お金の計算や小数の計算をする時は、 java.math.BigDecimal を使う
補足. 演算子の全種類
1. 算術演算子(+ , - , * , / , %)
2. 比較演算子(< , <= , > , >= , == , !=)
3. 条件演算子(&& , || , !() )
4. 三項演算子(真偽値 ? trueの場合の値 : falseの場合の値)
5. 代入演算子(+= , -= , *= , /= , %=)
6. インクリメント演算子(++)
7. デクリメント演算子(--)
8. シフト演算子(<< , >>)
その中で、計算系は下記になります。
1. 算術演算子
5. 代入演算子
6. インクリメント演算子
7. デクリメント演算子
8. シフト演算子
※シフト演算子は処理が高速ですが、分かり辛いので覚えなくてOKです。
補足. インクリメント演算子、デクリメント演算子
「++」 と「--」の違いは、 「+1 をするか」「 -1 をするか」だけです。
実際に演算子をつかった場合と、使わなかった場合の比較コードで見ていきましょう。同じことをやっています。
++ を変数の後に付けた
int num = 3;
num++;
System.out.println(num++); // 4
++ を変数の後に付けたのと同じ処理
int num = 3;
num = num + 1;
System.out.println(num);
num = num + 1;
++ を変数の前に付けた
int num = 3;
++num;
System.out.println(++num); // 5
++ を変数の前に付けたのと同じ処理
int num = 3;
num = num + 1;
num = num + 1;
System.out.println(num);
補足. 変数に計算をした結果を代入する
例えば、
int num = 2;
int sum = num + 3;
みたいに、計算結果を別の変数の値とする(つまり、代入する) のであれば別ですが、
int num = 2;
num = num + 2;
のように、変数の値を変更してその結果を代入する場合、同じ変数名を書くのでちょっと面倒です。これは、省略しましょう。
下記の書き方ができます。
int num = 2;
num += 2;
「+=」 でも、「-=」でも、同じです。その計算が足し算になったか、引き算になったかの違いでしかないのですので、全ての計算で利用ができます。
補足. お金や小数の計算をする
主に掛け算や割り算の場合です。試しに、この計算をしてみてください。
double divide = 7 / 3;
System.out.println(divide);
「7÷3」ですので「2.33333...」となってほしいですね。
ですが、この実行結果は「2.0」です。四捨五入するのであれば、まあ、大丈夫かな…となりますが、「7 / 4」とかやってみてください。
結論を言ってしまうと、このままだと大惨事になります。ですので、
お金や小数の計算をする時には、java.math.BigDecimal を使いましょう。
上記のjavadoc を見れば、メソッドが書いてあるので説明は不要な気もします・・。ですので、実際のコードだけ書いておきます。
import java.math.BigDecimal;
import java.math.RoundingMode;
BigDecimal val = BigDecimal.valueOf(7);
BigDecimal sum = val.add(BigDecimal.valueOf(3)); // 7 + 3 = 10
BigDecimal minus = val.subtract(BigDecimal.valueOf(3)); // 7 - 3 = 4
BigDecimal multiply = val.multiply(BigDecimal.valueOf(4)); // 7 × 4 = 28
BigDecimal divide = val.divide(BigDecimal.valueOf(4), 0, RoundingMode.HALF_UP); // 7 / 4 の 小数第一位を四捨五入 = 2
※ 全て、BigDecimal に変換して処理を行う必要があるため、やや面倒ですし、通常の算術演算子を使うより、処理が多少遅くはなります。
遅くなると言っても 微々たるものですのであまり気にせず、正確な計算ができるように心がけてみてください。
進み始めたその一歩に祝福を。
それでは、楽しいプログラミング生活をお過ごしください。
読んでいただき、ありがとうございました。
いいなと思ったら応援しよう!
