格式化用正确的十进制规模数(Formatting a number with correct dec

2019-10-17 03:37发布

我需要格式化数与2位小数的规模。 原来的号码可以是整数或小数点后三位的号码。 但是结果应该被格式化为具有逗号,也小数点后两位总是不管原来的数是整数或具有小数。

  1. 当原NUM = 56565656.342 ==>我需要56,565,656.34
  2. 当原NUM = 56565656 ==>我需要56,565,656.00
  3. 当原NUM = 56565656.7 ==>我需要56,565,656.70

我使用下面的代码被格式化的代码,但它未能添加两位小数在上述2和3的情况。

String originalNumber = "56565656.7";
BigDecimal b = new BigDecimal(originalNumber).setScale(2, BigDecimal.ROUND_HALF_UP);
String formattedNumber = NumberFormat.getInstance().format(b);

请让我知道是否有任何方式efficeint的方式来做到这一点。

提前致谢。

Answer 1:

看看在DecimalFormat的类。

另外,您可以setScale从BigDecimal类方法。

        BigDecimal bg1 = new BigDecimal("56565656.342");
        BigDecimal bg2 = new BigDecimal("56565656.00");
        BigDecimal bg3 = new BigDecimal("56565656.70");

        DecimalFormat df = new DecimalFormat("###,###.00");
        System.out.println(df.format(bg1.doubleValue()));
        System.out.println(df.format(bg2.doubleValue()));
        System.out.println(df.format(bg3.doubleValue()));

        System.out.println(bg1.setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println(bg2.setScale(2, BigDecimal.ROUND_HALF_UP));
        System.out.println(bg3.setScale(2, BigDecimal.ROUND_HALF_UP));

产量:

56,565,656.34
56,565,656.00
56,565,656.70
56565656.34
56565656.00
56565656.70

编辑:另外忘了提:如果您是精密后,我会建议你使用setScale方法,使用.doubleValue()方法将产生一个double这可能会导致精度损失。



Answer 2:

只要使用NumberFormat并指定小数位数,并四舍五入方法,打印:

String [] originalNumbers = new String[] {
   "56565656.342",
   "56565656.7",
   "56565656"
};

NumberFormat df = NumberFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(2);
df.setRoundingMode(RoundingMode.HALF_UP);

for (String number : originalNumbers) {
   String formattedNumber = df.format(new BigDecimal(number));

   System.out.println(formattedNumber);
}

将打印

56,565,656.34
56,565,656.70
56,565,656.00

** 编辑 **

DecimalFormat df = new DecimalFormat("#,###.00");

会产生上面给定的代码完全相同的结果。



Answer 3:

DecimalFormat的类会为你做....你必须指定合适的格式。



文章来源: Formatting a number with correct decimal scale