2016-12-26 7 views
-1

2つの 'int'変数を分割して結果を 'double'変数に保存すると、小数点の右側の値はゼロになりますか?Java 'Int'と 'Double'を学習する

以下の3つの例を参照してください。

はマイク

例1 パブリッククラスMyClassの{

public static void main(String[] args) { 
    int x, y, answer; 
    x = 70; 
    y = 30; 
    answer = x/y; 
    System.out.print(answer); 
} 

}

出力は= 2(私はすべての変数はint型として定義され、その結果を理解し、事前にありがとう')

例2の パブリッククラスMyClassの{

public static void main(String[] args) { 
    int x, y; 
    double answer; 
    x = 70; 
    y = 30; 
    answer = x/y; 
    System.out.print(answer); 
} 

}

出力= 2.0(私は結果を理解していない、変数答えが '二重' であり、Iは2.3333333333333335予想)

例3 パブリッククラスMyClassの{

public static void main(String[] args) { 
    double x, y, answer; 
    x = 70; 
    y = 30; 
    answer = x/y; 
    System.out.print(answer); 
} 

}

出力= 2.3333333333333335が(私は結果を理解し、「二重」として定義されているすべての変数)(この場合2ある)整数をもたらす2つの整数を除算

+0

これは、すべての操作が完了した後ではなく、 'double'に変換されます。 –

+0

コンピュータの整数と浮動小数点の違いと、変数の種類がそれらに対して実行される操作にどのように影響するかを一般的に理解する必要があります。一般的に、2つの型Tのバイナリ演算を実行すると、結果の型はT型になります。異なる型を使用して演算を実行する場合は、少なくとも1つのオペランド(およびおそらく両方)その種類に事前に –

答えて

0

2番目のコードでJavaがこの行をどのように実行するかを詳しく見ていきましょう。

answer = x/y; 

、これは代入文であることを知っているので、まず、Javaは=演算子を見ています。代入を評価するには、rigntの式を評価し、その結果を左側の変数に代入します。したがって、最初に右側を評価します。

x/y 

うーん...何がその結果である可能性がありますか? xintであり、yintであり、あなたには/演算子があります。私は除算演算子が2つのオペランドに適用できることを知っていますので、xyの値を得させてください。ああ!それは70/30です!それは整数で割った整数なので、結果は整数でなければなりません!結果は2です!

今割り当ては次のようになる。

answer = 2; 

Javaは、左右に二重変数に整数を見つけ、それを二重に2を変換し、変数にそれを置きます。

+0

あなたは面白いです、バディ。 – Mordechai

0

。この整数をdoubleに格納することを選択したので、今度は2.0と表されます。

0

最初のコードは、すべてをintとして読み取り、intを返します。 2番目のコードは2つのintを読み込み、intの倍数を与えます(例:10/5 = 2ですが、2倍の2は2.0です)。最後に、3番目のコードはすべてを二重に読み込みます。たとえば、70/30(= 70.0/30.0)= 2.33 ...

0

例2は、answer = x/yを計算すると、最初にx/yと計算され、2を計算し、double型2.0を変換します。

関連する問題