我有一个Double
对象,在转换为long
值时会丢失确切的值。
Double d = 1.14*100
System.out.println(d.longValue());
上述声明将打印:113
。
我希望打印114
。
由于
答案 0 :(得分:7)
如果您需要确切的114值,则需要使用Math.round
:
double d = 1.14*100;
System.out.println(Math.round(d));
答案 1 :(得分:4)
试试这个
Long.parseLong( String.format( "%.0f",doublevalue ) ) ;
答案 2 :(得分:3)
如果您正在寻找具有您期望值的整数/长值表示,您可以使用:
Math.round(1.14 * 100)
答案 3 :(得分:1)
首先,double
不是完全正确。接下来,当投射 double
/ float
到long
/ int
时,小数部分会被删除(不会舍入)。
要获取最近的值,您需要围绕:
System.out.println(Math.round(d));