在声明/ init中使用双除法时的Java奇怪行为

时间:2016-04-16 22:12:50

标签: java floating-point initialization declaration division

我测试了这两个代码:

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

为什么会这样?

1 个答案:

答案 0 :(得分:2)

因为double b = 1 / 2;首先计算1 / 2,它是简单的整数除法并且计算结果为0,然后将该值转换为双0.0以将其分配给b