<i18n dev> [15] RFR: 8227313: Support monetary grouping separator in DecimalFormat/DecimalFormatSymbols

naoto.sato at oracle.com naoto.sato at oracle.com
Thu Jan 2 20:50:35 UTC 2020

Hi Joe,

Happy new year and thanks for your comments. Please see my replies below:

On 12/23/19 5:20 PM, Joe Wang wrote:
> Hi Naoto,
> Is there a need for an APINote to note the relationship between the new 
> get/setMonetaryGroupingSeparator and get/setGroupingSeparator methods. 
> The new method did state it "May be different from {@code grouping 
> separator} in some locales", but that may be insufficient. For example, 
> does setting one method affects the other (seems it should since the 
> monetaryGroupingSeparator may be initialized by the groupingSeparator as 
> the impl shows)? If yes, how it's affected?

Setting the custom monetary grouping separator will not affect the 
existing normal grouping separator. I added the explanation in the 
method description.

> If no, is there a compatibility concern? In the current impl, the new 
> get method is used when "isCurrencyFormat" is true while the new set 
> method doesn't affect the existing 'groupingSeparator'. For existing 
> applications that have a custom grouping separator set through 
> setGroupingSeparator, it seems to me the custom separator won't be used 
> moving onto the new JDK impl.

Good point. Modified the compatibility risk from minimum to low with the 

> A minor comment about the definition statement in the following:
>      Add the following new serializable field 
> in|java.text.DecimalFormatSymbols|class:
> |/** * The grouping separator used when formatting currency values. * * 
> @serial * @since 15 */ private char monetaryGroupingSeparator;|
> and that for the new get method:
>          Gets the character used for thousands separator for currencies.
> While the meanings are clear, they were not as consistent as that 
> between the existing groupingSeparator and its get method, that is:
>          Character used for thousands separator.
>     and then the get method states:
>          Gets the character used for thousands separator.
> But this is minor, your call whether to change it or not.

Consistency is important. I replaced all occurrences of "thousands 
separator(s)" in DecimalFormat/DecimalFormatSymbols with "grouping 

Here are the modified changeset:


as well as the modified CSR at the same URL.


> Best,  and have a great Christmas! :-)
> Joe
> On 12/20/19 12:57 PM, naoto.sato at oracle.com wrote:
>> Hi,
>> Please review the fix for the following issue:
>> https://bugs.openjdk.java.net/browse/JDK-8227313
>> The proposed CSR and changeset are located at:
>> https://bugs.openjdk.java.net/browse/JDK-8235942
>> https://cr.openjdk.java.net/~naoto/8227313/webrev.00/
>> The change introduces the new monetary grouping separator in 
>> DecimalFormatSymbols, and it is used if a DecimalFormat instance 
>> designates currency formatting where its pattern includes the currency 
>> symbol (U+00A5). The change makes use of the CLDR data which provides 
>> two distinct grouping separators (one for generic, the other for 
>> currency) in some locales. It also addresses the similar cases for the 
>> decimal separator.
>> Naoto

More information about the i18n-dev mailing list