将double类型转换为long类型而不强制转换的最佳方法是什么?

例如:

double d = 394.000;
long l = (new Double(d)).longValue();
System.out.println("double=" + d + ", long=" + l);

当前回答

简单地说,强制转换比创建Double对象更有效。

其他回答

简单地说:

double d = 394.000;
long l = d * 1L;

简单地说,强制转换比创建Double对象更有效。

(new Double(d)). longvalue()在内部只执行强制转换,因此没有理由创建Double对象。

... 这是舍入法,不会截断。赶紧在Java API手册里查了一下:

double d = 1234.56;
long x = Math.round(d); //1235

Guava Math库有一个专门设计用于将double转换为long的方法:

long DoubleMath.roundToLong(double x, RoundingMode mode)

您可以使用java.math.RoundingMode来指定舍入行为。