如何使用小数分隔符正确格式化Double值?

时间:2013-08-08 17:16:25

标签: android string-formatting number-formatting decimalformat

我有一个使用千位分隔符(,)和小数点分隔符(。)的应用程序,我在他们的配置上使用相同语言(Español)的2个平板电脑上使用此应用程序,当我使用15,000.00之类的数字进行某些处理时第一个答案是正确的,但在第二个平板电脑中,数字变为15,00。我将第二语言改为英语,它可以工作,但我如何在代码上设置这种数字格式?

抱歉这不是我的母语。

感谢您的帮助

3 个答案:

答案 0 :(得分:4)

您可以在代码中格式化double值:

/**
 * format a number properly
 * @param number
 * @return
 */
public String formatDecimal(double number) {

    DecimalFormat nf = new DecimalFormat("###.###.###.##0,00");
    // or this way: nf = new DecimalFormat("###,###,###,##0.00");

    String formatted = nf.format(number);

    return formatted;
}

然后将其设置为TextView:

mytextview.setText("MyDouble: " + formatDecimal(somedouble));

答案 1 :(得分:1)

您可以使用

进行格式化
NumberFormat nf = NumberFormat.getInstance(new Locale("es", "MX")); //for example

但请注意,因为取决于语言环境,即使是相同的语言但不同的国家,十进制字符和分组字符我的更改,例如

NumberFormat nf = NumberFormat.getInstance(new Locale("es", "CO")); //displays 15.000,00

答案 2 :(得分:0)

您可以获取android docs指定的特定区域设置的实例:

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);

但是,在向用户imho显示内容时,不应更改区域设置。