0

double値を通貨にフォーマットしてからユーロ記号を削除しようとしていますが、アプリケーションがクラッシュしました。誰かがどこが間違っているのか教えてもらえますか?

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

formatdoubleを受け入れ、その値を文字列に変換する必要はありません。正規表現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

通貨を返還したくないので、単純に使用することができますDecimalFormat。これにより、小数点以下2桁に丸めることもできます(コメントから)。

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