こんばんは!ヒカリです。
Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。
今流行の仮想通貨を自動売買してみました!
リモートワークでおすすめのグッズ紹介してみました!
今回はこのような質問をいただきました。
割合の計算したくてコード書いてみたんだけど何回やっても0になっちゃう…
割合を求めるときは思わぬ落とし穴があるんですよね。
そこで今回はこちらの質問について解説していきます!
なぜ0になる?
原因はInteger(int)型を使っているからです。
Integer型のため、b/aを行った際に小数点以下は切り捨てられます。
そのため、0か1にしかなりません。
Integer a = 6000;
Integer b = 5800;
int result = b / a * 100;
System.out.println(result);
0
float型、もしくはdouble型を使おう!
小数点以下を扱うためにfloat型、 もしくはdouble型に変換してから計算する必要があります。
計算をする前にfloat型に変換してみました。
Integer a = 6000;
Integer b = 5800;
float result = (float) b / (float) a * 100;
System.out.println(result);
96.666664
小数点以下を切り捨てるには?
Integer(int)型に戻すことで、簡単に小数点以下を切り捨てることができます。
Integer a = 6000;
Integer b = 5800;
Integer result = (int) ((double) b / (double) a * 100);
System.out.println(result);
96
まとめ
割合を求める場合はfloat型、 もしくはdouble型に変換してから計算する必要があります。
Integer a = 6000;
Integer b = 5800;
float result = (float) b / (float) a * 100;
System.out.println(result);
あとがき
冷静に考えればわかることなのですが、見落としがちですね。
割合を求める場合はfloat型、もしくはdouble型を使用しましょう!
また、小数点以下が不要な場合はInteger(int)型へ変換するだけで簡単に切り捨てられます。
型をうまく使い分けて読みやすいソースコードにしたいですね。