バックエンド

【Java】割合を求めてみよう!【百分率】

percentage
野田竣介

今回はこのような質問をいただきました。

割合の計算したくてコード書いてみたんだけど何回やっても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)型へ変換するだけで簡単に切り捨てられます。

型をうまく使い分けて読みやすいソースコードにしたいですね。

記事URLをコピーしました