我正在尝试使用以下行来指定一个双常量,任何人都可以帮我解释为什么在运行时这个常量的值为0.0
:
private static final double CONSTANT = 1/2;
我正在尝试使用以下行来指定一个双常量,任何人都可以帮我解释为什么在运行时这个常量的值为0.0
:
private static final double CONSTANT = 1/2;
1 和 2 被解释为整数并产生整数除法结果。在末尾添加 D 以使它们被解释为双打。
private static final double CONSTANT = 1D/2D;
常量以值结束,0.0
因为整数除法的结果是一个整数,被截断。所以你的初始化值是0
,不是0.5
。要强制double
结果,请将一个或两个操作数设为 a double
:
private static final double CONSTANT = 1/2.0; // or 1/2D, or even 1D/2D