仅在需要时显示双精度值的小数

我遇到了双精度(小数)的问题。
当双精度值 = 1.234567 时,我使用
所以结果是 1.234String.format("%.3f", myString);

但是当我的双精度为10
时,结果将是10,000
,我希望这是10

他们是否是一种说法,即他只需要在“有用”时显示小数?

我看到了一些关于这个的帖子,但那是php或c#,找不到一些关于这个的android / java的东西(也许我看起来不好)。

希望你们能帮我解决这个问题。

编辑,现在我使用这样的东西:
但我认为有一个更“友好”的代码。myString.replace(",000", "");


答案 1

带有 # 参数的 DecimalFormat 是要走的路:

public static void main(String[] args) {

        double d1 = 1.234567;
        double d2 = 2;
        NumberFormat nf = new DecimalFormat("##.###");
        System.out.println(nf.format(d1));
        System.out.println(nf.format(d2));
    }

将导致

1.235
2

答案 2

不要使用替身。您可能会失去一些精度。下面是一个通用函数。

public static double round(double unrounded, int precision, int roundingMode)
{
    BigDecimal bd = new BigDecimal(unrounded);
    BigDecimal rounded = bd.setScale(precision, roundingMode);
    return rounded.doubleValue();
}

您可以调用它

round(yourNumber, 3, BigDecimal.ROUND_HALF_UP);

“精度”是您想要的小数点数。

从这里复制。


推荐