我传入了一个Integer值,然后将其除以100,因此结果可以是int或double,因此不确定是否强制转换。
public void setWavelength(Integer value) {
this.wavelength = value;
}
然后将值除以100
pluggable.setWavelength(entry.getPluggableInvWavelength()/100);
所以不确定如何施放此值/对象
答案 0 :(得分:4)
如果将整数(int
)除以另一个整数(int
),结果将再次为整数(int
)。
- 更多详情:15.17 Multiplicative Operators
您需要将其中一个或两个标记为双重
//cast the divisor entry.getPluggableInvWavelength() to double
pluggable.setWavelength( ((double) entry.getPluggableInvWavelength()) /100);
或
//make the constant quotient a double
pluggable.setWavelength(entry.getPluggableInvWavelength() /100.0);
注意这样一个事实:java.lang.Integer
是一个不可变的包装类型而不是int
! - 实际上你不能用java.lang.Integer
来计算,但是从Java 1.5开始,编译器会将int
转换为Integer
并自动返回(自动装箱和自动拆箱)。但总的来说,最好只了解真正需要的对象(而不是要计算的数字)才能理解差异并使用Integer
。
答案 1 :(得分:2)
如果waveLength
为double
,则为:
entry.getPluggableWavelength() / 100d;
d
表示该号码被视为double
,因此除法结果为double
。
答案 2 :(得分:1)
如果您将int
除以int
,则总会获得int
。如果您需要float
或double
(因为您需要表示结果的小数部分),那么您需要投射一个或两个输入:
int a = 3;
int b = 4;
int c1 = a / b; // Equals 0
double c2 = a / b; // Still equals 0
double c3 = (double)a / (double)b; // Equals 0.75
答案 3 :(得分:0)
如果entry.getPluggableInvWavelength()返回int
,/100
的结果也将是int
如果必须有双重结果,则必须存储双倍结果。
double wavelength;
public void setWavelength(double value) {
this.wavelength = value;
}
pluggable.setWavelength(entry.getPluggableInvWavelength()/100.0);
除以100.0就可以获得带有2位小数的双重结果。