整数或双返回值

时间:2011-04-26 16:06:01

标签: java casting

我传入了一个Integer值,然后将其除以100,因此结果可以是int或double,因此不确定是否强制转换。

public void setWavelength(Integer value) {
    this.wavelength = value;
}  

然后将值除以100

pluggable.setWavelength(entry.getPluggableInvWavelength()/100);

所以不确定如何施放此值/对象

4 个答案:

答案 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)

如果waveLengthdouble,则为:

entry.getPluggableWavelength() / 100d;

d表示该号码被视为double,因此除法结果为double

答案 2 :(得分:1)

如果您将int除以int,则总会获得int。如果您需要floatdouble(因为您需要表示结果的小数部分),那么您需要投射一个或两个输入:

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位小数的双重结果。