2015-11-05 193 views
-3

UPDATE:在上面的问题中删除“in Android 5.0”,因为我觉得它与版本没有任何关系,但取决于语言环境。为什么String.format(“%。2f”,10.0F)返回值10,00而不是10.00?

以下代码的常见输出为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作为输出。

+5

它使用默认的语言环境。您应该使用特定的区域设置来初始化格式器。 –

+1

[对我来说10,00是一个很好的... 10.00是坏的...](https://en.wikipedia.org/wiki/Decimal_mark#Countries_using_Arabic_numerals_with_decimal_comma) – Selvin

回答

4

的文档为String.format()说:

返回一个本地化的格式化字符串,使用附带的格式和 参数,使用用户的默认语言环境。

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

您可能希望使用String.format (Locale locale, String format, Object... args)(这是您当前使用的函数的重载)来获得所需的行为。 (请参阅文档here)。你可以给它一个初始化的Locale来获得你想要的行为。有关Locale的更多信息,请查阅文档here

1

试试这个

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