jsr354-ri icon indicating copy to clipboard operation
jsr354-ri copied to clipboard

Locale formatting displaying incorrect decimal digits based on locale

Open waggyza opened this issue 3 years ago • 3 comments

If I create a currency with 2 decimal places and then try format it in a locale with a country with no decimal places (eg. JAPAN), the USD amount gets displayed with no decimal digits.

Correct me if I am wrong but the locale in MonetaryAmountFormat using AmountFormatQueryBuilder is the locale in which we are displaying the MonetaryAmount and not necessarily the locale of the currency amount.

eg. of issue MonetaryAmount moneyAmount = Money.of(10.32, "USD"); MonetaryAmountFormat formatter = MonetaryFormats.getAmountFormat( AmountFormatQueryBuilder.of(Locale.JAPAN) .set(CurrencyStyle.SYMBOL) .build()); String testFormat = formatter.format(moneyAmount);

testFormat in this example would be shown as $10 What I am expecting is $10.32

Same is true the other way around. MonetaryAmount moneyAmount = Money.of(10, "JPY"); MonetaryAmountFormat formatter = MonetaryFormats.getAmountFormat( AmountFormatQueryBuilder.of(Locale.US) .set(CurrencyStyle.SYMBOL) .build()); String testFormat = formatter.format(moneyAmount);

testFormat is ¥10.00 What I am expecting is ¥10

waggyza avatar May 28 '21 13:05 waggyza

We'll try to replicate that. What is the version of Moneta you are using?

keilw avatar May 28 '21 13:05 keilw

Moneta version 1.4.2 <groupId>org.javamoney</groupId> <artifactId>moneta</artifactId> 1.4.2 pom

waggyza avatar May 29 '21 09:05 waggyza

I'm seeing the same behavior. Has there been any update on this issue? Thanks!

pgr0ss avatar Feb 14 '22 17:02 pgr0ss