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工作?
试试这个:
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/300或67d/300d.
它应该如下所示:
public static final double factor = 67d/300d;
Run Code Online (Sandbox Code Playgroud)
如果你不附加'd',它将被视为整数,这就是你获得ZERO的原因.
int将是deafault选择.由于每个DOC
对于整数值,此数据类型通常是默认选择,除非有理由(如上所述)选择其他内容