3

計算に使用したいいくつかの要素を含む構成ファイルがあります。

public class Config {

  public static final double factor = 67/300; // ~0,2233...

}

私は次のように要因にアクセスしています:

public class Calculate {

  public static calc() {
    ...
    result *= Config.factor;
    ...

これを行うと、Config.factor が 0 になるため、結果も 0 になります。係数を 0.2233 に設定すれば問題はありませんが、それほど正確ではありません。67/300 に設定してもうまくいかないのはなぜですか?

4

3 に答える 3

9

これを試して:

public static final double factor = 67/300d;

問題は、67300が整数リテラルであるため、除算の結果が 0 の整数になりdます。67/300ddouble

前のコードでは、二重リテラルが であることに注意してください300d67d/300またはも使用できます67d/300d

于 2012-09-11T17:26:39.647 に答える
7

以下のようになります。

 public static final double factor = 67d/300d;

「d」を追加しないと、整数として扱われるため、ゼロになります。

int がデフォルトの選択になります。ドキュメントによる

整数値の場合、他のものを選択する理由 (上記のような) がない限り、通常、このデータ型がデフォルトの選択です。

于 2012-09-11T17:26:47.917 に答える
1

67/300 を入力すると、コンパイラはこれらをintではなくとして扱いdoubleます。したがって、除算が発生すると、結果は 0 になります。

これを回避するには、各数値の後に (他の回答で説明されているように) をdouble追加するか、 を使用して完全な型キャストを行って、数値を にキャストします。d(double)

于 2012-09-11T17:29:19.320 に答える