I'm not native to Taiwan, nor do I have any knowledge of Taiwanese Mandarin. Hence it could be that all is as intended. My observation:
NumberFormat format = NumberFormat.getCurrencyInstance(Locale.TAIWAN);
format.setCurrency(Currency.getInstance("TWD"));
System.out.println(format.format(1600));
Results in $1,600.00. This might indicate to a reader the US Dollar, not the new Taiwan dollar (TWD). But TWD uses as symbol NT$, hence I would assume the correct result to be NT$ 1,600.00. Debugging indicates that the NumberFormat construction evaluates to a Symbol set in which $ is a default prefix - but before digging too much into details. Is this the intended behavior?
- Tested on OpenJDK Runtime Environment Corretto-18.0.2.9.1 (build 18.0.2+9-FR).
Seems to be intended. Based on the list of Currency symbols on Wikipedia, most of the different dollar currencies like
Can$/C$(Canadian dollar) orNT$/元/圓(New Taiwan Dollar) (see third column of the table) still use simply$as actual symbol (see first column of the table).There are some currencies where a letter +
$is actually the symbol, like the Nicaraguan córdoba for example withC$, for which the Java symbol and formatting is as expected withC$: try it online.