Java 整数或双返回值
我传入了一个整数值,然后除以100,所以结果可能是int或double,所以不确定是否强制转换它Java 整数或双返回值,java,casting,Java,Casting,我传入了一个整数值,然后除以100,所以结果可能是int或double,所以不确定是否强制转换它 public void setWavelength(Integer value) { this.wavelength = value; } 然后值除以100 pluggable.setWavelength(entry.getPluggableInvWavelength()/100); 因此,不确定如何投射此值/对象如果波长为双波长,则具有: entry.getPluggableWav
public void setWavelength(Integer value) {
this.wavelength = value;
}
然后值除以100
pluggable.setWavelength(entry.getPluggableInvWavelength()/100);
因此,不确定如何投射此值/对象如果
波长
为双波长
,则具有:
entry.getPluggableWavelength() / 100d;
d
表示该数字被视为double
,因此除法结果为double
如果将一个整数(int
)除以另一个整数(int
),则结果将再次成为一个整数(int
)。
--更多详情:
您需要将一个或两个标记为双精度
//cast the divisor entry.getPluggableInvWavelength() to double
pluggable.setWavelength( ((double) entry.getPluggableInvWavelength()) /100);
或
请注意,
java.lang.Integer
是一种不可变的包装类型,而不是int
!-事实上,您不能使用java.lang.Integer
进行计算,但由于java 1.5,编译器将int
转换为Integer
并自动返回(自动装箱和自动取消装箱)。但一般来说,更好的办法是理解差异,只有在真正需要对象(而不是计算数字)时才使用整数。如果输入。getpluggaleinvwavelength()返回一个int
,/100
的结果也将是int
如果必须具有双重结果,则必须存储双重结果
double wavelength;
public void setWavelength(double value) {
this.wavelength = value;
}
pluggable.setWavelength(entry.getPluggableInvWavelength()/100.0);
除以100.0就可以得到一个小数点后两位的双精度结果。如果将int
除以int
,则始终会得到int
。如果需要浮点
或双精度
(因为需要表示结果的小数部分),则需要转换一个或两个输入:
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
您使用Integer
而不是int
有什么原因吗?事实上,您只需编写:entry.getPluggableWavelength()/100.0代码>100.0将被视为双精度,结果将是双精度。抱歉,输入。getPluggableInvWavelength()返回一个int,我必须以纳米为单位显示结果。因此,结果可能是85000/100=850nms或13455/100=134.55。那么我应该将entry.getPluggableInvWavelength()转换为“((双)entry.getPluggableInvWavelength())/100”吗
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