Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
在声明/init中使用双除法时Java的奇怪行为_Java_Floating Point_Initialization_Declaration_Division - Fatal编程技术网

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

在声明/init中使用双除法时Java的奇怪行为,java,floating-point,initialization,declaration,division,Java,Floating Point,Initialization,Declaration,Division,我已经测试了这两个代码: (一) 结果:0.0 (二) 结果:0.5 为什么会发生这种情况?因为双b=1/2首先计算1/2,这是一个简单的整数除法,计算结果为0,然后将该值转换为double0.0,将其分配给b double b = 1 / 2; @Override public void paintComponent(Graphics g) { super.paintComponent(g); System.out.println(b); } double b = 0.5

我已经测试了这两个代码:

(一)

结果:0.0

(二)

结果:0.5


为什么会发生这种情况?

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

double b = 1 / 2;

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    System.out.println(b);
}
double b = 0.5;

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    System.out.println(b);
}