1

我正在尝试调试涉及DecimalFormat#applyPattern(String)Java 1.6 的问题。默认的语言环境是法语,所以默认的小数点分隔符是','。但是,该模式指定应用“。” 到它似乎没有的十进制格式实例。我尝试调试applyPattern()但看不到变量值。我不太熟悉模式和正则表达式,所以我不确定问题是模式还是其他问题。是模式不正确还是代码有其他问题?

这是代码片段:

public class DecimalFormatTester
{
   static private final DecimalFormat doubleFormat = (DecimalFormat) NumberFormat.getInstance();

     static 
     {
       doubleFormat.applyPattern("############.00");
     }

  public static String toString(double value) 
  {
    synchronized (doubleFormat) 
    {
        return doubleFormat.format(value);
    }
  }
}

Junit这是失败的示例代码行:

assertEquals("String values aren't equal", "2179005635.00", DecimalFormatTester.toString(2.179005635E9));
4

3 回答 3

3

.in 模式是(当前设置的)十进制字符的############.00占位符。

如果你想.作为十进制字符,那么你还必须设置十进制字符,例如。通过设置Locale.US

您可以保存您当前的语言环境,然后设置为Locale.US,然后重新设置您的 saved Locale,但要确保您的应用程序不是多线程的。

你也可以使用

DecimalFormatSymbols.getInstance().setDecimalSeparator(".");
于 2013-01-07T18:26:31.450 回答
1

更改适当输出的语言环境。另一方面,您可以使用自定义DecimalFormatSymbols.

###,###.###      123,456.789     en_US
###,###.###      123.456,789     de_DE
###,###.###      123 456,789     fr_FR

在区域设置敏感格式中查看更多信息

于 2013-01-07T18:37:46.740 回答
0

在模式############.00中,'.' 表示您的语言环境的小数点分隔符。

在您的情况下,我理解它是法语小数分隔符,即“,”。

于 2013-01-07T18:30:00.760 回答