算数で習った通りの計算なのですが、型によってはうまくいかないので変換する必要がありました。
概要
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