整型除法:为什么结果是 1/3 == 0?
2022-08-31 08:02:40
我正在写这个代码:
public static void main(String[] args) {
double g = 1 / 3;
System.out.printf("%.2f", g);
}
结果为 0。为什么会这样,我该如何解决这个问题?
我正在写这个代码:
public static void main(String[] args) {
double g = 1 / 3;
System.out.printf("%.2f", g);
}
结果为 0。为什么会这样,我该如何解决这个问题?
两个操作数(1 和 3)是整数,因此使用整数算术(此处除法)。将结果变量声明为双精度值只会导致在除法后发生隐式转换。
整数除法当然返回四舍五入为零的除法的真实结果。因此,此处的结果向下舍入为 0。(请注意,处理器实际上并不进行任何舍入,但您仍然可以这样想。0.333...
另外,请注意,如果两个操作数(数字)都以浮点数给出;3.0和1.0,甚至只是第一个,然后使用浮点算术,给你.0.333...
1/3
使用整数除法,因为两边都是整数。
您至少需要其中一个是 或 。float
double
如果您像问题一样在源代码中输入值,则可以执行 ;是双打。1.0/3
1.0
如果从其他位置获取值,则可以使用 将 转换为 .(double)
int
double
int x = ...;
int y = ...;
double value = ((double) x) / y;