1. ホーム
  2. java

[解決済み] 整数の割り算:doubleはどうやって出すの?

2022-02-02 03:21:42

質問

このコードブロックの場合

int num = 5;
int denom = 7;
double d = num / denom;

の値 d でございます 0.0 . キャスティングで強制的に動作させることができる。

double d = ((double) num) / denom;

しかし、他に正しい方法があるのでしょうか? double の結果は?私はプリミティブの鋳造は好きではありません、何が起こるかわからないからです。

どのように解決するのですか?

double num = 5;

これでキャストは回避できます。 しかし、キャストの変換はきちんと定義されていることがわかります。 推測する必要はなく、単に JLS .int から double への変換は、幅が広がります。 から §5.1.2 :

プリミティブ変換の幅を広げても に関する情報を失います。 の大きさは、数値の大きさである。

[...]

int値またはlong値の変換 をfloatに、またはlong値を ダブルでは 精度、つまり、結果が の最下位ビットの一部です。 の値です。この場合、結果の 浮動小数点値は を正しく丸めたものです。 整数値、IEEE754準拠 ラウンド・トゥ・ニアス・モード (§4.2.4) .

5は丁度2倍で表すことができる。