4

我想将例如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

4

1 回答 1

2

如果您希望-4,000.43format()调用中的字符串)成为-4 000,43,您可以进行两次替换。

第一种是将所有,字符替换为空格,然后将所有.字符替换为,.

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

当您想要交换 ,时会出现问题,并且. (a)但您仍然可以这样做,尽管需要 3 个步骤:

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

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

但是,您可能已经可以使用格式字符串,而无需替换字符串。从这里开始,特殊字符似乎已本地化,因此应该有一种方法可以根据语言环境创建DecimalFormat具有特定字符的字符。DecimalFormatSymbol

至少在 Java 中是这样的。Java Android 是否可以做同样的事情,我不确定。众所周知,他们以前对国际化采取了不同的策略。


(a)讨厌那些欧洲人和他们有趣的数字格式:-)

于 2013-05-27T06:55:35.000 回答