第四章 
 〜基本編〜
 演算後編
 演算と精度
   前回の最後に演算をしていて、自分の思っていた通りの結果が得られないというようなことが
  あった人もいるんじゃないですかね?それとも、何もおきなくスムーズにいった人もいるかも
  しれないです。
  では、実際に予想と違う結果がでてくるプログラムをいきなりやっていきたいと、思うです〜
サンプルプログラム4_2_1
   1:
   2:
   3:
   4:
   5:
   6:
//おかしな結果?になるプログラム
class Rei4_2_1{
    public static void main(String args[]){
        System.out.println("6 / 4 = " + (6 / 4));
    }
}

   このプログラムを実行すると出力結果が6 / 4 = 1と表示されてしまうです・・・
  なぜこうなってしまったのかというと、変数の型に問題があるのです。
  それは、どういうことかと言うですと、
  6も4もどちらも整数なので、出力結果が整数になってしまう
  というルールがあるです。そして、小数点以下は無視されるのです。
  だから結果が1になってしまったのです。
   実際にどうすればいいのかと言うですと、それはキャスト演算をするのです〜
  キャスト演算というのは、型を変える機能があるです。
  例えば、int型の変数aをdoublu型にキャスト(変換)したい場合は
  (double)a; //int型の変数aをdouble型にキャスト(aに5があった場合5.00…になる
  と書けばいいです。
  数値をキャストすることも可能です〜
  (double)5; //整数5をdouble型にキャスト5が5.00…になる

   それともう1つ知っておいてほしいことがあるです。
  それは、型には強さみたいなものがあって
  例えば、int型よりfloat型の方が強い
      float型よりdouble型の方が強い
  といった感じです。
   int a = 10;
   double b = 5.3;
   b = a; //これは可能。強い型の所に、弱い型の変数を入れるは可能
   a = b: //これはだめ。弱い型の所に、強い型を入れるのは不可
   a = (int)b //キャストすれば代入可能!
   これは、型にはサイズ(大きさ)があるのでおきる現象です。
  大きな箱には、小さい箱も入るって覚えておけばいいと思うです〜

   今、言った二つのことを利用すると、割り算をしたときに正しい答えを出すことができるです。
  System.out.println("6 / 4 = " + (6 / 4));の部分を
  System.out.println("6 / 4 = " + ((double)6 / 4));に直してコンパイルし、
  実行してみてほしいです。
  今度は、正しくでてきたと思うです。
  なぜそうなるのかは、まず、(double)6で6.00…のdouble型の少数になるです。
  そしてdouble型とint型の計算が行われるです。
  このときouble型はint型より強いので計算結果は、double型になるです。
  つまり小数点以下も出力できるです。
  
  TOPに戻る     Java講座に戻る