and*_*elt 57 java currency number-formatting
我NumberFormat.getCurrencyInstance(myLocale)用来获取我给出的语言环境的自定义货币格式.但是,这总是包含我不想要的货币符号,我只想要我没有货币符号的给定区域设置的正确货币编号格式.
做一个format.setCurrencySymbol(null)抛出一个异常..
JB *_*zet 55
以下作品.这有点难看,但它符合合同:
NumberFormat nf = NumberFormat.getCurrencyInstance();
DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) nf).getDecimalFormatSymbols();
decimalFormatSymbols.setCurrencySymbol("");
((DecimalFormat) nf).setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(nf.format(12345.124).trim());
Run Code Online (Sandbox Code Playgroud)
您还可以从货币格式获取模式,删除货币符号,并从新模式重建新格式:
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));
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 44
用空字符串设置它:
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
Run Code Online (Sandbox Code Playgroud)
给定的解决方案有效,但最终为欧元留下了一些空格。我最终做了:
numberFormat.format(myNumber).replaceAll("[^0123456789.,]","");
Run Code Online (Sandbox Code Playgroud)
这确保我们拥有数字的货币格式,而没有货币或任何其他符号。
只需使用NumberFormat.getInstance()代替NumberFormat.getCurrencyInstance()如下所示:
val numberFormat = NumberFormat.getInstance().apply {
this.currency = Currency.getInstance()
}
val formattedText = numberFormat.format(3.4)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48699 次 |
| 最近记录: |