Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java双打印格式会因是否使用String.format而不同_Java_Floating Point_Format_Locale - Fatal编程技术网

为什么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()是最基本的实现的十倍,足以显示对象的可理解显示