整型或双精度返回值



我有一个整型值传入,然后除以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

如果waveLengthdouble,则有:

entry.getPluggableWavelength() / 100d;

d表示将数字作为double处理,因此除法结果为double

如果你用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

如果entry.getPluggableInvWavelength()返回一个int,则/100的结果也将是一个int

如果必须有双精度结果,则必须存储双精度结果。

double wavelength;
public void setWavelength(double value) {
    this.wavelength = value;
}  
pluggable.setWavelength(entry.getPluggableInvWavelength()/100.0);

除以100.0是你所需要的,有两个小数点。

最新更新