private static final double为0

时间:2012-08-05 00:03:04

标签: java static final private-members

我正在尝试使用以下行来指定一个双常量,任何人都可以帮我解释为什么在运行时这个常量的值为0.0

private static final double CONSTANT = 1/2;

2 个答案:

答案 0 :(得分:10)

1和2被解释为整数并产生除法的整数结果。在末尾添加D以使它们被解释为双精度。

private static final double CONSTANT = 1D/2D;

答案 1 :(得分:7)

常量最后得到0.0的值,因为整数除法的结果是整数,被截断。因此,初始化的值为0,而不是0.5。要强制double结果,请将一个或两个操作数设为double

private static final double CONSTANT = 1/2.0;  // or 1/2D, or even 1D/2D