2016-04-22 16 views
-1

intdoubleよりも精度が低いので、メソッドに解析するときにキャストする必要があると考えました。しかし、次のコードは正常に動作します。どうして?異なるデータ型を解析するJava

public class MyClass { 

    public static void main(String[] args) { 
     System.out.println(met(3/2)); 
    } 

    static String met(int i){ 
     return "This is what I get " + i; 
    } 

} 
+1

ここでは「ダブル」は表示されません。 – rgettman

+1

私はそれが3/2だと思った。 – ocram

+9

'3/2'は二重ではない。これは '1'の値を持つ' int'です。 '3.0/2.0'は' double'で、値は '1.5'です。 – Gendarme

答えて

1

3/2とすると、二重の結果は得られません。整数除算が行われ、結果は整数に切り捨てられます。したがって、キャストの必要はありません。ダブル結果を得るためには、どちらかをdoubleにキャストして、コンパイルエラーを取得してdoubleにキャストする必要があります。

met(3d/2)を実行しようとすると、期待しているコンパイラエラーが発生します。

+2

@Pillar私はそのコメントに基づいてupvoted私はあなたが重複を見つけることについてどれだけ心配するかについての無礼の点を過ぎ去ったと思います。 –

+3

@Pillar私は重複を発見していないとうまくいけば誰かがすぐにそれを行う。少なくとも多くの人と違って、あなたの投票を説明してくれてありがとう。一番最後に、あなたが気に入らないものはゴミではありません。 –

関連する問題