There is no doubt that there is some piece of information I'm missing on this.
I've run the following code
import java.text.NumberFormat;
import java.util.Locale;
import java.math.BigDecimal;
class Main {
public static void main(String[] args) {
NumberFormat canadaFrench = NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
NumberFormat canadaEnglish = NumberFormat.getCurrencyInstance(Locale.CANADA);
BigDecimal amount = new BigDecimal("123456789.99");
System.out.println(canadaFrench.format(amount));
System.out.println(canadaEnglish.format(amount));
}
}
In java pre-17 the result is as follow
123 456 789,99 $
$123,456,789.99
But from java 17
123 456 789,99 $ CA
$123,456,789.99
I went ahead and tested this into java 19. With that version the formatting is corrected.
Why is the formatting of french canadian changed ?