Java:public static final double不能设置为小数?

Joh*_*ohn 3 java double static final fractions

我有一个配置文件,其中包含我想用于计算的一些因素.

public class Config {

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

}
Run Code Online (Sandbox Code Playgroud)

我访问这样的因素:

public class Calculate {

  public static calc() {
    ...
    result *= Config.factor;
    ...
Run Code Online (Sandbox Code Playgroud)

当我这样做时,Config.factor等于0,所以我的结果也是0.如果我将因子设置为0.2233,我没有那个问题,但那不会那么准确.为什么不将它设置为67/300工作?

aro*_*ero 9

试试这个:

public static final double factor = 67/300d;
Run Code Online (Sandbox Code Playgroud)

问题是67并且300是整数文字,因此除法最终是一个整数,即0.d数字的末尾使它成为双字面,因此结果67/300d为a double.

请注意,在前面的代码中,double literal是300d.你也可以使用67d/30067d/300d.


kos*_*osa 7

它应该如下所示:

 public static final double factor = 67d/300d;
Run Code Online (Sandbox Code Playgroud)

如果你不附加'd',它将被视为整数,这就是你获得ZERO的原因.

int将是deafault选择.由于每个DOC

对于整数值,此数据类型通常是默认选择,除非有理由(如上所述)选择其他内容