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

时间:2012-09-11 17:25:25

标签: java static double final fractions

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

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工作?

3 个答案:

答案 0 :(得分:9)

试试这个:

public static final double factor = 67/300d;

问题是67300是整数文字,因此除法最终是一个整数,即0。数字末尾的d使其成为double literal,因此67/300d的结果是double

请注意,在前面的代码中,双字面是300d。您还可以使用67d/30067d/300d

答案 1 :(得分:7)

应该如下所示:

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

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

int将是deafault选择。作为per doc

  

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

答案 2 :(得分:1)

当您输入67/300时,编译器会将其视为int而不是double。因此,当发生除法时,结果将被置为0。

要避免这种情况,请将数字转换为double,方法是在每个数字后添加d(如其他答案中所述)或使用(double)添加完整类型。