更新:在上面的问题中删除“在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作为输出。
答案 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);