默认情况下,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