This question already has answers here:
How can a primitive float value be -0.0? What does that mean?

(5个答案)


5个月前关闭。




我需要舍入一个小的负数以返回0.0。但是,我得到的值是负零。以下代码演示了该问题:

double value = -0.000000001;
double roundedValue = Double.valueOf(String.format(Locale.US, "%.4f", value));
System.out.println(roundedValue); // I need the roundedValue to be equal 0.0 (not -0.0)

有办法解决吗?

最佳答案

您可以显式处理负零的情况:

roundedValue = (roundedValue == 0.0 && 1 / roundedValue < 0) ? 0 : roundedValue;

(1 / roundedValue < 0this answer检查负零)

Nit:使用Double.parseInt而不是valueOf,以避免不必要的装箱和立即拆箱。

关于java - 如何在Java中舍入一个小的负 double 而不导致负零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61388914/

10-11 01:32