Nambari is right. Take a look at this:
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.JAPAN);
BigDecimal bd = new BigDecimal(123.456);
String str = nf.format(bd);
System.out.println("" + nf.getMaximumFractionDigits()); //prints out 0
System.out.println(str);
It seems like the default fraction digits for Japan is set to 0. When I do the same for Locale.US it apparently defaults to 2. Use Nambari's answer and setMaximumFractionDigits.
As to why, thanks to @Lee Meador for pointing it out in a comment, Japanese currencies do not use decimal places (aka the single yen is as far as you can go).
From a wikipedia article on the Japanese yen:
"Coins in denominations of less than 1 yen became invalid on December 31, 1953, following enforcement of the Small Currency Disposition and Fractional Rounding in Payments Act"
Since I'm too lazy to look up the Korean currency, I'm just going to assume they have a similar situation.