繁体   English   中英

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

[英]Java: public static final double can't be set to decimal fraction?

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

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

尝试这个:

public static final double factor = 67/300d;

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

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

它应该如下所示:

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

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

int将是deafault选择。 按照文档

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

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

为了避免这种情况,施放编号,以double通过添加或者d每个数后(如在其他的答案所描述的)或全型铸造带(double)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM