整数或双精度浮点数返回值

4

我有一个整数值被传入,然后它被除以100,所以结果可能是int或double类型,不确定是否需要进行强制转换。

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

然后将该值除以100

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

我不确定如何转换这个值/对象


1
你使用 Integer 而不是 int 有什么原因吗? - mre
4个回答

4
如果你将一个整数(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 开始,编译器会自动进行 intInteger 之间的转换(自动装箱和自动拆箱)。但一般来说,最好理解它们之间的区别,并仅在真正需要对象(而不是用于计算的数字)时使用 Integer

2
如果waveLengthdouble类型,则有:
entry.getPluggableWavelength() / 100d;

d 表示数字被视为 double 类型,因此除法结果也是 double 类型。


实际上,您只需编写:entry.getPluggableWavelength() / 100.0; 100.0将被视为double类型,结果也将是double类型。 - Liv

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

0

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

如果你需要一个double类型的结果,那么你必须存储一个double类型的结果。

double wavelength;

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

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

除以100.0就足以让你得到一个保留两位小数的双精度浮点数结果。


抱歉,entry.getPluggableInvWavelength() 返回一个整数,我需要以纳米为单位显示结果。因此,结果可能是85000/100=850纳米或者13455/100=134.55。那么,我应该将entry.getPluggableInvWavelength()强制转换为'((double) entry.getPluggableInvWavelength()) /100)'吗? - daverocks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接