Java 为什么String.format(“%.2f”,10.0F)返回值10,00而不是10.00?

Java 为什么String.format(“%.2f”,10.0F)返回值10,00而不是10.00?,java,android,android-5.0-lollipop,string.format,Java,Android,Android 5.0 Lollipop,String.format,更新:删除上面问题中的“安卓5.0”,因为我觉得这与版本无关,但取决于语言环境 下面代码的通常输出为10.00。但在安卓5.0中,它返回值10,00 String value = String.format("%.2f", 10.0F); System.out.println("Value is "+value); //For Console Output Log.w("NumberClass.java","Value is "+value); //For Logcat Output 是

更新:删除上面问题中的“安卓5.0”,因为我觉得这与版本无关,但取决于语言环境

下面代码的通常输出为10.00。但在安卓5.0中,它返回值10,00

 String value = String.format("%.2f", 10.0F);
 System.out.println("Value is "+value); //For Console Output
 Log.w("NumberClass.java","Value is "+value); //For Logcat Output
是的功能

 String.format("%.2f", 10.0F);
安卓棒棒糖有变化吗?如果是这样,这种奇怪行为的解决方案是什么


我需要10.00作为输出。
String.format()的文档说明:

使用提供的格式和返回本地化的格式化字符串 参数,使用用户的默认区域设置

所以,如果你是法国人,会使用昏迷,但如果你是美国人,会使用圆点

您可能希望使用
String.format(区域设置、字符串格式、对象…参数)
(这是您当前使用的函数的重载)来获得所需的行为。(见文件)。您可以给它一个初始化的
Locale
,以获得所需的行为。有关
Locale
的详细信息,请查看文档。

试试这个

String value2 = String.format(getResources().getConfiguration().locale,"%.2f", 10.0F);

它使用默认的语言环境。您应该使用特定的语言环境初始化格式化程序。