Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 私有静态最终双精度为0_Java_Static_Final_Private Members - Fatal编程技术网

Java 私有静态最终双精度为0

Java 私有静态最终双精度为0,java,static,final,private-members,Java,Static,Final,Private Members,我正试图使用下面的行来指定一个双常量,有人能帮我解释一下为什么在运行时这个常量的值是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结果,请将一个或两个操作数设为

我正试图使用下面的行来指定一个双常量,有人能帮我解释一下为什么在运行时这个常量的值是
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
结果,请将一个或两个操作数设为
double

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

…当java将
float
放入
int
时,小数位被简单地截断,因此
0.5
变为
0
。另外,第一个到达的时间为+1answer@Bohemian-在本例中,java将
float
放入
int
的位置在哪里?@StephenC不是,我也没有说它是。我之所以提到它,是因为当整数除法的结果在数学上是一个分数时,其效果就像一个
浮点
被放入一个
整数
——数字的非整数部分是ignored@Bohemian-整数
/
运算符的正确数学描述不需要带实数(或
float
)到图片中。
N/D
运算符的结果在数学上定义为
Q
,其中
N=Q*D+R
,和
0@StephenC…或简单的
floor(N/D)
,这就是我想说的。nmI删除了我的答案,支持Alex的答案,但我想留下的一点是,
1/2
是一个表达式(两个整数被除),而不是一个文字值。谢谢,这很有意义。