4 型の変換(キャスト演算子)

| コメント(0)
double型の変数にint型の変数を代入したらどうなるか?
   int i = 8;
   double d = i;
エラーにはならない。だが、逆にdouble型にint型を入れるとコンパイルエラーになる。
   double d = 8;
   int i = d;      // 「精度が落ちている可能性」のエラーがでる

これは、精度の高い型に、精度の低い型は代入出来るが、逆は出来ない。
どうしても代入したい場合は、キャスト演算子を使います。
   double d= 8;
   int i = (int) d;    // ( )の中に変換の型を記入する

問題4
表示結果は?
  System.out.println( 3 / 2 );
  System.out.println( 3 / 2.0 );
  int a = 7;
  double d = a / 3;
  System.out.println( d );
            d= (double) a / 3;
  System.out.println( d );

---------------------------------------------------------------------------------------------------
  System.out.println( 3 / 2 );   // 答え 1

何も書かないとJAVAはint型と判断します。

  System.out.println( 3 / 2.0 );  // 答え 1.5

2.0 と書くとJAVAはdouble型と判断します。
また、違う型同士の計算は精度の高い方を優先します。

  int a = 7;
  double d = a / 3;                       // 答え 2.0
  System.out.println( d );         
              d = (double) a / 3;        // 答え  
2.3333333333333335
  System.out.println( d );        

上側は 7 / 3 をintの精度で計算し、double型に変換してd に入れます。
下側は a をdouble型に変換してから。3 はint型でも精度の高いa のdouble型で計算。
                2.33.,,,,35 の最後が3でなく5なのはjavaのいい加減さの為?
 型      精度
double          高い
float
long       ↑
int        ↓
short
byte      低い




コメントする