Java 在 declaration/init 中使用双除法时的奇怪行为
Java strange behaviour when using double division in declaration/init
我已经测试了这两个代码:
1)
double b = 1 / 2;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println(b);
}
结果:0.0
2)
double b = 0.5;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println(b);
}
结果:0.5
为什么会这样?
因为 double b = 1 / 2;
首先计算 1 / 2
,这是简单的整数除法,计算结果为 0,然后将该值转换为双精度 0.0
以将其分配给 b
.
我已经测试了这两个代码:
1)
double b = 1 / 2;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println(b);
}
结果:0.0
2)
double b = 0.5;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println(b);
}
结果:0.5
为什么会这样?
因为 double b = 1 / 2;
首先计算 1 / 2
,这是简单的整数除法,计算结果为 0,然后将该值转换为双精度 0.0
以将其分配给 b
.