3

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

private static final double CONSTANT = 1/2;
4

2 回答 2

10

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

private static final double CONSTANT = 1D/2D;
于 2012-08-05T00:04:17.933 回答
7

常量以值结束,0.0因为整数除法的结果是一个整数,被截断。所以你的初始化值是0,不是0.5。要强制double结果,请将一个或两个操作数设为 a double

private static final double CONSTANT = 1/2.0;  // or 1/2D, or even 1D/2D 
于 2012-08-05T00:04:28.337 回答