我有一个整型值传入,然后除以100,所以结果可能是int或double,所以不确定是否转换它。
public void setWavelength(Integer value) {
this.wavelength = value;
}
则值除以100
pluggable.setWavelength(entry.getPluggableInvWavelength()/100);
所以不确定如何转换这个值/对象
如果您将一个整数(int
)除以另一个整数(int
),结果将再次是整数(int
)。——更多细节:15.17乘法运算符
您需要将其中一个或两个标记为double
//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
。
如果waveLength
是double
,则有:
entry.getPluggableWavelength() / 100d;
d
表示将数字作为double
处理,因此除法结果为double
。
如果你用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
如果entry.getPluggableInvWavelength()返回一个int
,则/100
的结果也将是一个int
如果必须有双精度结果,则必须存储双精度结果。
double wavelength;
public void setWavelength(double value) {
this.wavelength = value;
}
pluggable.setWavelength(entry.getPluggableInvWavelength()/100.0);
除以100.0是你所需要的,有两个小数点。