32

我遇到了双(小数)这个问题。
当a double = 1.234567 然后我使用String.format("%.3f", myString);
所以结果是1.234

但是当我的双倍是 10
结果将是 10,000
我希望这是 10

他们是否可以说他只需要在“有用”时显示小数?

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

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

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

4

3 回答 3

93

带有 # 参数的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
于 2012-08-06T10:30:40.853 回答
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);

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

从这里复制。

于 2012-08-06T10:27:40.507 回答
0

尝试一下

double amount = 1.234567 ;
  NumberFormat formatter = new DecimalFormat("##.###");
  System.out.println("The Decimal Value is:"+formatter.format(amount));
于 2012-08-06T10:29:08.317 回答