将BigDecimal格式化为带千分位分隔符的字符串

将BigDecimal的金额格式化

References:

直接上代码

public static String formatThousandsSeparator(BigDecimal amount) {
    DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance();
    DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
    symbols.setGroupingSeparator(',');
    formatter.setDecimalFormatSymbols(symbols);
    formatter.setMaximumFractionDigits(4);
    return formatter.format(amount);
}
// input: 45678910.12
// output: 45,678,910.12

NumberFormat.getInstance();这个方法可以传Locale, 在只格式化金额的时候没什么用, 但是涉及币种就很方便了。

import java.util.*;
import java.text.*;

public class NumberFormatTest {
    public static void main(String[] args) {
        // 需要被格式化的数字
        double db = 1234000.567;
        // 创建四个Locale,分别代表中国、日本、德国、美国
        Locale[] locales = { Locale.CHINA, Locale.JAPAN, Locale.GERMAN, Locale.US };
        NumberFormat[] nf = new NumberFormat[12];
        // 为上面四个Locale创建12个NumberFormat对象
        // 每个Locale分别有通用数值格式器、百分比格式器、货币格式器
        for (int i = 0; i < locales.length; i++) {
            nf[i * 3] = NumberFormat.getNumberInstance(locales[i]);
            nf[i * 3 + 1] = NumberFormat.getPercentInstance(locales[i]);
            nf[i * 3 + 2] = NumberFormat.getCurrencyInstance(locales[i]);
        }
        for (int i = 0; i < locales.length; i++) {
            String tip = i == 0 ? "----中国的格式----"
                    : i == 1 ? "----日本的格式----" : i == 2 ? "----德国的格式----" : "----美国的格式----";
            System.out.println(tip);
            System.out.println("通用数值格式:" + nf[i * 3].format(db));
            System.out.println("百分比数值格式:" + nf[i * 3 + 1].format(db));
            System.out.println("货币数值格式:" + nf[i * 3 + 2].format(db));
        }
    }
}

结果

----中国的格式----
通用数值格式:1,234,000.567
百分比数值格式:123,400,057%
货币数值格式:¥1,234,001
----德国的格式----
通用数值格式:1.234.000,567
百分比数值格式:123.400.057 %
货币数值格式:1.234.000,57 ¤
----美国的格式----
百分比数值格式:123,400,057%
货币数值格式:$1,234,000.57

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……