結果も int なので小数点以下は切り捨てられますね 
intの割り算を正しく求める例 型変換 キャスト - 萌えJava超入門
第七章 基本データ型の型変換

intの割り算を正しく求める例

キャスト演算子を使って、intの割り算を正しく求めます。


目次

1.int同士の割り算は小数点以下が切り捨てられる

int同士の割り算は小数点以下が切り捨てられます。
リテラルなら、小数点を付けて、doubleのリテラルにできますが、 変数ではそうも行きません。

例えば、変数 a 〜 d の平均値を求めてみましょう。

//Sample09_41.java
class Sample09_41 {
    public static void main(String[] args){

      int num_of_value = 4;;
      int a = 81;
      int b = 64;
      int c = 84;
      int d = 76;

      double avg = (a + b + c + d)/num_of_value;//int同士の演算

      System.out.println("avg= " + avg);
    }
}

コマンドライン
>javac Sample09_41.java
>java Sample09_41
avg= 76.0  ← 正解は 76.25

int 同士の計算結果は int なので、小数点以下は切り捨てられます。
double型の変数で受けても、intに丸められた値になりました。

知ってる。





2.正しく計算結果を得るための型変換

Sample09_42 の例では、計算結果を double で求めたいので、
値の一つをキャスト演算子で doubleに型にしました。

//Sample09_42.java
class Sample09_42 {
    public static void main(String[] args){

        int num_of_value = 4;
        int a = 81;
        int b = 64;
        int c = 84;
        int d = 76;

        double avg = (a + b + c + d)/(double)num_of_value;
          //num_of_value を double にキャスト

        System.out.println("avg= " + avg);
    }
}

コマンドライン
>javac Sample09_42.java
>java Sample09_42
avg= 76.25


広いデータ型のへの明示的な型変換は、
計算結果の精度を高くしたい場合に有効ですね。

doubleにキャスト!
キャストの代わりに
double num_of_value_double = num_of_value
とかでもいいな。
でもキャスト演算子ってわかりやすいだろ?。


お疲れ様でした。




© 2019 awasekagami