为什么Java双打印格式会因是否使用String.format而不同
此代码:为什么Java双打印格式会因是否使用String.format而不同,java,floating-point,format,locale,Java,Floating Point,Format,Locale,此代码: System.out.println(String.format("%f", Math.PI)); System.out.println(Math.PI); 在我的计算机上生成该结果: 3,141593 3.141592653589793 为什么第一行使用逗号打印浮点数,而第二行使用点?前者尊重您的区域设置(似乎使用逗号表示千位分隔符)。String.format(String,Object…使用locale.getDefault()中的格式规则字符串。valueOf(doub
System.out.println(String.format("%f", Math.PI));
System.out.println(Math.PI);
在我的计算机上生成该结果:
3,141593
3.141592653589793
为什么第一行使用逗号打印浮点数,而第二行使用点?前者尊重您的区域设置(似乎使用逗号表示千位分隔符)。
String.format(String,Object…
使用locale.getDefault()
中的格式规则<代码>字符串。valueOf(double)不可用。使用String.format(区域设置、字符串、对象…
明确指定要使用的区域设置。第一个使用
可能使用默认(不可本地化)实现。String.format()使用系统的区域设置。还应该有该方法的变体,您可以传递特定的语言环境实例。另一方面,当使用println()时,会调用对象的toString()方法——在您的例子中,Double#toString()是最基本的实现的十倍,足以显示对象的可理解显示