Change DecimalFormat locale

冷暖自知 提交于 2019-12-03 01:44:47

You may try by first converting to NumberFormat and then Cast it to DecimalFormat

Integer vc = 3210000;
        NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
        DecimalFormat formatter = (DecimalFormat)nf;
        formatter.applyPattern("#,###,###");
        String fString = formatter.format(vc);
        return convertNumbersToEnglish(fString);

You can also specify locale for DecimalFormat this way:

DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);
DecimalFormat format = new DecimalFormat("##.########", symbols);

You can use basic constructor for setting Locale while creating DecimalFormat object:

DecimalFormat dFormat = new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.US));

Use simply this method to convert current localization wise number,

public static String currencyFormatter(String balance) {
    try {
        double amount = Double.parseDouble(balance);
        DecimalFormat decimalFormat = new DecimalFormat("##,##,##,###.##");
        DecimalFormat locationSpecificDF = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            locationSpecificDF = (DecimalFormat) DecimalFormat.getNumberInstance(Locale.forLanguageTag("bn")); // Ex. en, bn etc.
        } else {
            return decimalFormat.format(amount);
        }
        return locationSpecificDF.format(amount);
    } catch (Exception e) {
        return balance;
    }
}

or follow this link.

androidcodetowin

if you want to use only NumberFormat, you can do this way:

unicoinsAmmount.setText(NumberFormat.getNumberInstance(Locale.US).format(vc));

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!