[英]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;
问题是67
和300
是整数文字,因此除法最终是一个整数,即0。数字末尾的d
使它成为双字面,因此67/300d
的结果是double
67/300d
。
请注意,在前面的代码中,双字面值是300d
。 您也可以使用67d/300
或67d/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.