ダブルスを使用してJavaで317を219で割ると、1になります。
例:
double b = 317/219;
System.out.println(b);
出力は次のとおりです:1。
これは循環小数だからですか?代わりにBigDecimalを使用する必要がありましたが、これは面倒です。
これを試して
double b = 317/219D;
Javaのコード化された数字のデフォルトのタイプは ですint
。したがって、コードをそのまま使用すると、Javaは2つのint
数字で動作し、除算の結果int
も同様になり、小数部分が切り捨てられて最終結果が得られ1
ます。このint
結果は、拡大キャスト (ソースの型がターゲットの型に "適合" することが保証されている) であるため、コンパイラの警告なしでからint 1
にキャストされます。double 1
double
数字のいずれかを末尾と同じようにコーディングするD
ことで ( も使用できますが、小文字は のように見えるd
ため、常に大文字を使用します)、除算の結果も同様になります。L
l
1
double
別の代替...
double b = (double)317/219;
これは、整数リテラルを使用したため、整数除算を行っているためです。
double b = 317.0/219.0;
代わりに書いてみてください。
実行時に例に分割がないことは言及する価値があります。317/219はコンパイル時に計算され(整数除算、小数部は破棄されます)、定数に置き換えられます。.classを逆コンパイルすると(私はJad http://www.kpdus.com/jad.htmlを使用しました)、次のように表示されます。
double b = 1.0D;
これがint
分割です。書く:
double b = 317.0/219;
System.out.println(b);
あなたが入れた数字は整数であるため、答えもそうです。
double を取得するには、浮動小数点数を使用するか、使用する整数のいずれかをキャストする必要があります。
double b = 317.0/219;
System.out.println(b);
また:
double b = ((double)317)/219;
System.out.println(b);