格式化没有货币符号的货币

新手上路,请多包涵

我正在使用 NumberFormat.getCurrencyInstance(myLocale) 为我提供的语言环境获取自定义货币格式。但是,这总是包含我不想要的货币符号,我只想要适合我给定区域设置的正确货币数字格式,而没有货币符号。

做一个 format.setCurrencySymbol(null) 抛出异常..

原文由 anderswelt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 810
2 个回答

以下作品。它有点难看,但它履行了合同:

 NumberFormat nf = NumberFormat.getCurrencyInstance();
DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) nf).getDecimalFormatSymbols();
decimalFormatSymbols.setCurrencySymbol("");
((DecimalFormat) nf).setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(nf.format(12345.124).trim());

您还可以从货币格式中获取模式,删除货币符号,并从新模式中重建新格式:

 NumberFormat nf = NumberFormat.getCurrencyInstance();
String pattern = ((DecimalFormat) nf).toPattern();
String newPattern = pattern.replace("\u00A4", "").trim();
NumberFormat newFormat = new DecimalFormat(newPattern);
System.out.println(newFormat.format(12345.124));

原文由 JB Nizet 发布,翻译遵循 CC BY-SA 3.0 许可协议

改为用空字符串设置它:

 DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setCurrencySymbol(""); // Don't use null.
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(12.3456)); // 12.35

原文由 BalusC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题