有办法将java.lang.Double转换为java.lang.Integer吗?

它会抛出一个异常

" . lang。ClassCastException: java.lang.Double不兼容java.lang.Integer"


当前回答

Double不是Integer,所以强制转换无效。注意Double类和Double原语之间的区别。还要注意,Double是一个数字,因此它有方法intValue,您可以使用该方法获取作为原始int的值。

其他回答

这对我很有效。试试这个:

double od = Double.parseDouble("1.15");
int oi = (int) od;

我认为有三种可能。前两个截断数字,最后一个舍入到最近的整数。

double d = 9.5;
int i = (int)d;
//i = 9

Double D = 9.5;
int i = Integer.valueOf(D.intValue());
//i = 9

double d = 9.5;
Long L = Math.round(d);
int i = Integer.valueOf(L.intValue());
//i = 10
double a = 13.34;
int b = (int) a;

System.out.println(b); //prints 13

使用doubleNumber.intValue();方法。

你可以使用“缩小或显式类型转换”来做到这一点, Double→long→int。我希望它能起作用。

double d = 100.04;
long l = (long)d; // Explicit type casting required
int i = (int)l;    // Explicit type casting required

PS:它会给出0,因为double有所有的十进制值,左边什么都没有。如果是0.58,它将把范围缩小到0。但对其他人来说,它会产生魔力。