ふりぶろぐ
Web Engineer's Blog
Java

【Java】割合を求める(百分率)

Java

算数で習った通りの計算なのですが、型によってはうまくいかないので変換する必要がありました。

概要

Javaで割合の計算をしました。

私はInteger型を使ってやっていたのですが、それではうまくいきませんでした。

冷静に考えればわかるのですが、計算に使用する値は一度float型、またはdouble型に変換する必要がありますね。

いくつか例を上げて計算してみたいと思います。

計算

実際に割合の計算をやってみます。

ダメな例

私は最初、このような書き方をしていました。

何回やっても0になってしまい、少し悩みました。

原因はInteger型をそのまま使っていたからです。

Integer型のため、 a / b を行った際に小数点以下は切り捨てられます。

そのため、0か1にしかなりません。

小数点以下を扱うためにfloat型、またはdouble型に変換してから計算する必要がありました。

Integer a = 6000;
Integer b = 5800;
int result = b / a * 100;
System.out.println(result);
結果
0

成功した例

計算をする前にfloat型に変換してみました。

この場合はうまくいきます。

Integer a = 6000;
Integer b = 5800;
float result = (float) b / (float) a * 100;
System.out.println(result);
結果
96.666664

実際には私はdouble型を使い、結果として小数点以下は不要だったのでもう一度int型(Integer型)に戻しました。

int型に戻すことで、簡単に小数点以下を切り捨てることができます。

Integer a = 6000;
Integer b = 5800;
Integer result = (int) ((double) b / (double) a * 100);
System.out.println(result);
結果
96

まとめ

冷静に考えればわかることなのですが、見落としがちですね。

割合を求める場合はfloat型かdouble型を使用しましょう。

また、小数点以下が不要な場合は、int型へ変換するだけで簡単に切り捨てられます。

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

ABOUT ME
りーふ
たまにブログを書いてるWebエンジニア。 サーバーサイドメインでインフラとフロントエンドもたまにやります。 Javaが得意。 Play Frameworkが好き。 本業は迷惑をかけない程度に手を抜くスタイル。 意識高い系は苦手。