我正在尝试将双值格式化为货币,然后删除欧元符号,但我的应用程序崩溃了。有人可以告诉我哪里错了吗?
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));
}
}
我在课堂上将其称为如下
double x = a + b + c;
的System.out.println(Formatting.convert(X));
答案 0 :(得分:4)
format
接受double,无需将该值转换为String。 replaceAll
需要 regexp ,您只需使用需要单个字符的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);
}
答案 1 :(得分:1)
由于您不希望退回货币,您可以简单地使用DecimalFormat
,这也会使您舍入到2位小数位(来自comment):
public static String replaceString(double number) {
NumberFormat formatter = new DecimalFormat("0.00");
return formatter.format(number);
}