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

时间:2015-11-05 09:53:52

标签: java android android-5.0-lollipop string.format

更新:在上面的问题中删除“在Android 5.0中”,因为我认为它与版本无关,但取决于区域设置。

以下代码的常规输出为 10.00 。但在Android 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);

在Android棒棒糖中改变了吗?如果那么这种奇怪行为的解决方案是什么?

我需要10.00作为输出。

2 个答案:

答案 0 :(得分:4)

String.format()的文档说:

  

使用提供的格式返回本地化格式化字符串   参数,使用用户的默认语言环境。

所以如果你是法国人,就会使用昏迷,但如果你是美国人,就会使用一个点。

您可能希望使用String.format (Locale locale, String format, Object... args)(这是您当前使用的函数的重载)来获得所需的行为。 (见文档here)。您可以为其初始化Locale以获取所需的行为。有关Locale的详细信息,请查看文档here

答案 1 :(得分:1)

试试这个

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