【发布时间】:2013-04-26 14:10:33
【问题描述】:
我遇到了一个奇怪的问题。
此代码只是将一个 int 除以另一个 int,将结果存储在一个 double 变量中并打印出来:
int a = 200;
int b = 557;
double divisionResult = a / b;
System.out.println("Result: " + divisionResult);
执行这段代码后,输出为:
Result: 0
这很奇怪,因为200/557 是0.3590664272890485
我注意到如果我将a 和b 转换为double 在除法行中
double divisionResult = (double) a / (double) b;
效果很好。
为什么我必须将变量加倍才能得到真正的除法结果?
【问题讨论】:
-
这很正常。来自
int/int=int的结果。如果要更改结果类型,则需要将至少一个参数的类型更改为浮点数,例如float或double -
请注意,您必须强制转换两个操作数中的一个来强制双除。