默認情況下,DecimalFormat
對象使用JVM的語言環境。 我們可以在使用NumberFormat
類創建DecimalFormat
對象時更改默認區域設置。 在下面的例子中,將爲兩個不同的區域設置使用相同的模式,可以在輸出中看到差異。
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
String pattern = "###.##";
double number = 123.45;
Locale enlocale = new Locale("en", "US");
Locale dalocale = new Locale("da", "DK");
DecimalFormat decimalFormat = (DecimalFormat)
NumberFormat.getNumberInstance(enlocale);
decimalFormat.applyPattern(pattern);
System.out.println(decimalFormat.format(number));
decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(dalocale);
decimalFormat.applyPattern(pattern);
System.out.println(decimalFormat.format(number));
}
}
執行上面示例代碼,得到以下結果:
123.45
123,45
可以看到某些語言環境下小數點會變成逗號, 甚至手機系統語言設置爲阿拉伯語的時候數字會變成印度語數字,這種情況下再使用Double.valueOf()方法轉換的時候就會報錯了。。。。。。
原文鏈接:https://www.yiibai.com/java_i18n/java_i18n_locale_decimalformat.html