2012-12-14 57 views
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)); 

    } 

} 

我人称其为类如下ý

双X = A + B + C;

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

+3

什么是例外? – PermGenError

+1

假设我有1000.009我将它转换为1,000.01而没有前面的货币符号 – Dimitri

+1

您的代码使用英镑“英镑”,而不是“欧元”。那是你的意图吗? – rossum

回答

4

format接受双击,没有必要将该值转换为String。 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); 
} 
+0

如果您删除硬编码的货币符号并在其位置使用适当的值,将会+1。 – Perception

+0

@Perception完成! –

1

当你不想让货币回来,你可以简单地使用DecimalFormat这也会给你(从你comment)四舍五入至小数点后2位:

public static String replaceString(double number) {  
    NumberFormat formatter = new DecimalFormat("0.00"); 
    return formatter.format(number); 
}