others - java - Int 除法:为什么有1/3 == 0的结果?

我正在写这段代码:


public static void main(String[] args) {


 double g = 1 / 3;


 System.out.printf("%.2f", g);


}



结果是0,为什么会这样,我该如何解决这个问题呢?

时间:

1/3使用整数除法两边都是整数。

你至少需要其中之一为floatdouble

如果你在源代码中输入的值与你的问题一样,那么你可以执行1.0/3 ; 1.0是double 。

如果从其他地方获得值,可以使用(double)int转换为double


int x = ...;


int y = ...;


double value = ((double) x) / y;



将它显式转换为double


double g = 1.0/3.0



发生这种情况是因为Java使用1和3的整数除法运算,因为您将它们作为整数常量输入。

你应该使用

 
double g=1.0/3;



 

或者

 
double g=1/3.0;



 

整数除法返回整数。

因为它将1和3视为整数,因此将结果四舍五入为0,所以,它是一个整数。

要获得你要查找的结果,请明确告诉java这些数字是双精度的,如下所示:


double g = 1.0/3.0;



使1成为浮点,浮点除法将被使用


public static void main(String d[]){


 double g=1f/3;


 System.out.printf("%.2f",g);


}



最简单的解决方法就是


double g = ((double) 1 / 3);



这就是所谓的转换操作符。

...