JavaMoney / jsr354-ri

JSR 354 - Moneta: Reference Implementation
Other
334 stars 100 forks source link

Locale formatting displaying incorrect decimal digits based on locale #358

Open waggyza opened 3 years ago

waggyza commented 3 years ago

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

keilw commented 3 years ago

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

waggyza commented 3 years ago

Moneta version 1.4.2

org.javamoney moneta 1.4.2 pom
pgr0ss commented 2 years ago

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