private static final double为0

Jua*_*ano 3 java static final private-members

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

private static final double CONSTANT = 1/2;
Run Code Online (Sandbox Code Playgroud)

Ale*_*man 10

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

private static final double CONSTANT = 1D/2D;
Run Code Online (Sandbox Code Playgroud)


pb2*_*b2q 7

常量最后得到一个值,0.0因为整数除法的结果是一个截断的整数.所以你初始化的价值0不是0.5.要强制执行double结果,请将一个或两个操作数设为a double:

private static final double CONSTANT = 1/2.0;  // or 1/2D, or even 1D/2D 
Run Code Online (Sandbox Code Playgroud)