此代码:
System.out.println(String.format("%f", Math.PI));
System.out.println(Math.PI);
在我的电脑上产生了这个结果:
3,141593
3.141592653589793
为什么第一行用逗号打印浮点数而第二行用点?
答案 0 :(得分:4)
String.format(String, Object...)
使用Locale.getDefault()
中的格式规则。 String.valueOf(double)
没有。使用String.format(Locale, String, Object...)
显式指定要使用的语言环境。
答案 1 :(得分:2)
前者尊重您的语言环境设置(似乎使用逗号分隔千位分隔符)。
答案 2 :(得分:0)
第一个使用default locale。
second可能使用默认(不可本地化)的实现。
答案 3 :(得分:0)
String.format()使用系统的语言环境。还应该有该方法的变体,您可以传递特定的Locale实例。另一方面,当使用println()时,调用对象的toString()方法 - 在你的情况下是Double#toString(),这是一个相当基本的实现,只是足以呈现对象的可理解的显示。