将Double转换为long而不会丢失确切的值

时间:2013-11-08 20:44:09

标签: java

我有一个Double对象,在转换为long值时会丢失确切的值。

Double d = 1.14*100

System.out.println(d.longValue());

上述声明将打印:113

我希望打印114

由于

4 个答案:

答案 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 / floatlong / int时,小数部分会被删除(不会舍入)。

要获取最近的值,您需要围绕

System.out.println(Math.round(d));