0

我正在尝试将双值格式化为货币,然后删除欧元符号,但我的应用程序崩溃了。有人可以告诉我哪里错了吗?

public class Formatting {

    public static String replaceString(String text){

        NumberFormat formatter = NumberFormat.getCurrencyInstance();
        String moneyString = formatter.format(text);
        System.out.println("epargne: "+moneyString);

        return text.replaceAll("£", "");

    }

    public static String convert(double x){
        return replaceString(Double.toString(x));

    }

}

我在 y 类中这样称呼它

双 x = a + b + c;

System.out.println(Formatting.convert(x));

4

2 回答 2

4

format接受双精度,无需将该值转换为字符串。replaceAll需要一个正则表达式,你可以简单地使用replace它需要一个字符。

public static String replaceString(double value){
    NumberFormat formatter = NumberFormat.getCurrencyInstance();
    String currencySymbol = formatter.getCurrency().getSymbol();
    String moneyString = formatter.format(value);
    return moneyString.replace(currencySymbol, "");
}

public static String convert(double x){
    return replaceString(x);
}
于 2012-12-14T12:37:27.097 回答
1

由于您不想退回货币,您可以简单地使用DecimalFormatwhich 也会将您四舍五入到小数点后 2 位(来自您的评论):

public static String replaceString(double number) {    
   NumberFormat formatter = new DecimalFormat("0.00");
   return formatter.format(number);
}
于 2012-12-14T12:34:16.213 回答