Convert double to Int, rounded down
如何执行以下操作将double值转换为int:
1 2 3
| Double If x = 4.97542. Convert to int x = 4.
Double If x = 4.23544. Convert to int x = 4. |
也就是说,答案总是四舍五入。
如果将double显式转换为int,则小数部分将被截断。 例如:
1 2
| int x = (int) 4.97542; //gives 4 only
int x = (int) 4.23544; //gives 4 only |
此外,如果希望返回double值,也可以使用Math.floor()方法对值进行舍入。
-
"松散十进制值"是什么意思? 它提供与调用Math.floor()相同的数字吗?
-
Double不是Integer,因此强制转换将不起作用。 注意Double类和double原语之间的区别。 另外请注意,Double是一个数字,因此它具有intValue方法,您可以使用该方法获取作为原始int的值。 如果尝试将Double强制转换为int,则将得到强制转换异常:java.lang.ClassCastException:无法将java.lang.Double强制转换为java.lang.Integer
如果double是带有大写D的double(装箱的原始值):
1 2 3 4 5
| Double d = 4.97542;
int i = (int) d. doubleValue();
// or directly:
int i2 = d. intValue(); |
如果double已经是原始double,则只需将其强制转换为:
1 2
| double d = 4.97542;
int i = (int) d; |
-
你能告诉我Double和double有什么区别吗?
-
double是原始浮点值。 Double是Java对象。
1 2 3 4
| double myDouble = 420.5;
//Type cast double to int
int i = (int)myDouble ;
System. out. println(i ); |
双精度值是420.5,应用程序将打印出整数值420
使用double或double的另一个选项是使用Double.valueOf(double d).intValue();。 简单干净
我认为我有更好的输出,尤其是对于双重数据类型排序。
尽管此问题已被标记为已回答,但也许会帮助其他人。
1 2 3 4 5 6 7 8
| Arrays. sort(newTag, new Comparator <String[]>() {
@Override
public int compare (final String[] entry1, final String[] entry2 ) {
final Integer time1 = (int)Integer. valueOf((int) Double. parseDouble(entry1 [2]));
final Integer time2 = (int)Integer. valueOf((int) Double. parseDouble(entry2 [2]));
return time1. compareTo(time2 );
}
}); |