有没有办法将java.lang.Double
转换为java.lang.Integer
?
它会抛出一个异常
"java.lang.ClassCastException: java.lang.Double不兼容于java.lang.Integer"
试试这个
double doubleValue = 6.5;Double doubleObj = new Double(doubleValue);int intResult = doubleObj.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: 如果一个数是double类型的,则返回值将为0,因为double类型包含所有小数位和没有左侧的数值。对于 0.58,它会缩小到 0。但对于其他数,它会产生奇妙的效果。
Double和Integer是Java基本数据类型double和int的包装类。你可以在它们之间进行类型转换,但是你将会失去浮点数的精度。也就是说,将5.4强制转换为int后将变成5。如果再将其强制转换回去,它将变成5.0。
或者,可以先将其转换为原始的double
,然后转换为int
,让它自动装箱为Integer
。
Double d = 20.3;
Integer i = (int) (double) d; //20
//To obtain primitive:
int i2 = (int) (double) d;
只需使用Double的intValue方法
Double initialValue = 7.12;
int finalValue = initialValue.intValue();
doubleNumber.intValue();
方法。内存效率高,因为它将共享已创建的Double实例。
Double.valueOf(Math.floor(54644546464/60*60*24*365)).intValue()
Math.floor(...)
?intValue()
总是向下取整。 - bvdb这个方法对我有用。试试这个:
double od = Double.parseDouble("1.15");
int oi = (int) od;