有办法将java.lang.Double转换为java.lang.Integer吗?
它会抛出一个异常
" . lang。ClassCastException: java.lang.Double不兼容java.lang.Integer"
有办法将java.lang.Double转换为java.lang.Integer吗?
它会抛出一个异常
" . lang。ClassCastException: java.lang.Double不兼容java.lang.Integer"
当前回答
在Double对象上调用intValue()。
其他回答
或者,可以先转换为原语double,然后转换为int,让它自动装箱为Integer。
Double d = 20.3;
Integer i = (int) (double) d; //20
//To obtain primitive:
int i2 = (int) (double) d;
double a = 13.34;
int b = (int) a;
System.out.println(b); //prints 13
Double d = 100.00;
Integer i = d.intValue();
还应该补充一点,它与自动装箱一起工作。
否则,你得到一个int(原语),然后可以从那里得到一个Integer:
Integer i = new Integer(d.intValue());
实际上,最简单的方法是使用intValue()。然而,这仅仅返回整数部分;它不做任何舍入。如果你想要最接近Double值的Integer,你需要这样做:
Integer integer = Integer.valueOf((int) Math.round(myDouble)));
不要忘记空大小写:
Integer integer = myDouble == null ? null : Integer.valueOf((int) Math.round(myDouble)));
Math.round()相对优雅地处理奇数鸭子情况,如无穷大和NaN。
是这样的:
Double foo = 123.456;
Integer bar = foo.intValue();