如何在不铸造的情况下将双倍转换为长整头?

2022-08-31 06:11:56

在没有铸造的情况下将双精度转换为多头的最佳方法是什么?

例如:

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

答案 1

假设你对截断为零感到满意,只需施法:

double d = 1234.56;
long x = (long) d; // x = 1234

这将比通过包装类更快 - 更重要的是,它更具可读性。现在,如果您需要舍入而不是“始终朝零”,则需要稍微复杂的代码。


答案 2

...这是不截断的舍入方式。赶快在Java API手册中查找它:

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