格式化双Android

时间:2013-05-27 06:52:30

标签: java android

我想转向,例如 5999.635554至5 999,63 。我使用下面的DecimalFormat方法:

public static String decimalDoubleForm(double value){

        DecimalFormat df = new DecimalFormat("#,###,###.00");
        String formatted_value = df.format(value).replaceAll("\\.", ",");

        return formatted_value;

}

然而,当我使用Util.decimalDoubleForm(value);时,例如 -4000.4343 我得到以下 -4,000,43

我想要的结果应该是 -4000.4343 => -4 000,43

1 个答案:

答案 0 :(得分:2)

如果您希望-4,000.43(来自format()来电的字符串)成为-4 000,43,您可以两个替换。

第一个是用空格替换所有,个字符,然后.替换所有,个字符。

String formatted_value = df.format(value)
    .replaceAll(","  , " ")
    .replaceAll("\\.", ",");

如果你想交换 ,. (a),这会有问题,但你仍然可以这样做,尽管有3 - 步骤:

comma  => X
period => comma
X      => period

(其中X是字符串中未出现的任何字符,例如"X")。

但是,您可以使用格式字符串,而无需更换字符串。从here开始,特殊字符似乎已本地化,因此应该有一种方法可以根据区域设置创建具有特定DecimalFormat的{​​{1}}。

至少在Java本身就是这种情况。 Java Android是否可以做同样的事情,我不确定。众所周知,他们之前在国际化方面采取了不同的策略。


(a)认识那些欧洲人及其有趣的数字格式: - )