我不是台湾人,也不懂台湾普通话.因此,一切都可能如预期的那样.我的观察是:

NumberFormat format = NumberFormat.getCurrencyInstance(Locale.TAIWAN); 
format.setCurrency(Currency.getInstance("TWD")); 

System.out.println(format.format(1600)); 

结果是$1,600.00.这可能代表的是美元,而不是新台币(TWD).但是TWD使用符号NT$,因此我假设正确的结果是NT$ 1,600.00.调试表明,NumberFormat构造的计算结果是一个符号集,其中$是默认前缀--但在深入研究细节之前.这是故意的行为吗?

  • 在OpenJDK Runtime Environment corretto-18.0.2.9.1(内部版本18.0.2+9-FR)上测试.

推荐答案

似乎是故意的.在list of Currency symbols on Wikipedia的基础上,大多数不同的美元货币,如Can$/C$(加元)或NT$/元/圓(新台币)(见表格第三栏),仍简单地使用$作为实际符号(见表格第一栏).

在某些货币中,字母+$实际上是符号,例如尼加拉瓜货币 C$,其Java符号和格式与预期的C$:try it online一样.

Java相关问答推荐

Selenium Java:无法访问IFRAME内部的元素

Spring安全实现多个SQL表身份验证

填写文本字段后锁定PDF

屏蔽字母数字代码的Java正则表达式

在spring—data中自动发现native—sql查询期间遇到重复的SQL别名[id]

JDK22执行repackage of goal org. springframework. boot:spring—boot—maven—plugin:3.2.3:repackage failed:unsupported class file major version 66—>

使用java访问具体子类特定方法的最佳方法是什么?

为什么不应用类型推断?

有没有办法让扩展变得多态?

使用SWIG将C++自定义单元类型转换为基本Java类型

将BlockingQueue+守护程序线程替换为执行器

如何设计包含已知和未知键值对映射的Java类?

如何在右击时 Select 新行?

H2数据库仅支持%1个结果集?

无限递归Java问题

java21预览未命名的符号用于try-with-resources

类型安全:从 JSONArray 到 ArrayList> 的未经判断的转换

Vaadin Flow:设置密码显示按钮属性

声纳覆盖范围为 0%,未生成 jacoco.xml

Java ModbusRTU写寄存器