Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 整数或双返回值_Java_Casting - Fatal编程技术网

Java 整数或双返回值

Java 整数或双返回值,java,casting,Java,Casting,我传入了一个整数值,然后除以100,所以结果可能是int或double,所以不确定是否强制转换它 public void setWavelength(Integer value) { this.wavelength = value; } 然后值除以100 pluggable.setWavelength(entry.getPluggableInvWavelength()/100); 因此,不确定如何投射此值/对象如果波长为双波长,则具有: entry.getPluggableWav

我传入了一个整数值,然后除以100,所以结果可能是int或double,所以不确定是否强制转换它

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.0100.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