Java中NumberFormat显示新台币(TWD)格式异常的疑问
问题分析与解答
这个表现是Java本地化实现中的预期行为,背后和台湾地区的日常货币使用习惯有关:
- 在台湾本地的日常场景里,
$通常默认指代新台币,因此Java的Locale.TAIWAN对应的货币格式默认使用$作为符号;而NT$更多用于需要明确区分货币的跨境或正式场景。
如果需要强制显示NT$格式,可以通过自定义DecimalFormatSymbols来修改,示例代码如下:
NumberFormat format = NumberFormat.getCurrencyInstance(Locale.TAIWAN); format.setCurrency(Currency.getInstance("TWD")); // 调整货币符号为NT$ if (format instanceof DecimalFormat decimalFormat) { DecimalFormatSymbols symbols = decimalFormat.getDecimalFormatSymbols(); symbols.setCurrencySymbol("NT$"); decimalFormat.setDecimalFormatSymbols(symbols); // 若需要符号和数字间带空格,可追加格式模式调整 decimalFormat.applyPattern("\u00A4 #,##0.00"); } System.out.println(format.format(1600)); // 输出 NT$ 1,600.00
内容的提问来源于stack exchange,提问作者Dennis Rippinger
相关产品推荐
相关产品推荐

