Bac*_*ash 4 java double int division
我有一个奇怪的问题.
这段代码只是将一个int除以另一个int,将结果存储在一个double变量中并打印出来:
int a = 200;
int b = 557;
double divisionResult = a / b;
System.out.println("Result: " + divisionResult);
Run Code Online (Sandbox Code Playgroud)
执行此代码后,输出为:
Result: 0
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为200/557
是0.3590664272890485
我注意到,如果我投a
并b
以double
在分割线
double divisionResult = (double) a / (double) b;
Run Code Online (Sandbox Code Playgroud)
它完美地运作.
为什么我必须将变量转换为double来获得真正的除法结果?
因为在整数除法中,如果答案不是完整的整数,则小数点后的数字将被删除(整数除法产生整数值).
注意,您不必强制转换两个整数,只能转换一个,第二个将被隐式转换.
为什么在演员之后呢?
因为演员的优先级高于/
.所以首先它投射,然后它分开.如果情况并非如此,那么你会得到0.0
.
归档时间: |
|
查看次数: |
8144 次 |
最近记录: |