我正在尝试调试涉及 Java 1.6 中的 DecimalFormat#applyPattern(String)
的问题。默认区域设置为法语,因此默认情况下小数点分隔符为“,”。但是,该模式指定应用“.”。到它似乎没有的十进制格式实例。我尝试调试 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));
最佳答案
模式 ############.00
中的 .
是(当前设置的)decimalCharacter 的占位符。
如果你想要 .
作为十进制字符,那么你还必须设置
十进制字符,例如。通过设置 Locale.US
您可以保存您当前的语言环境,然后设置为Locale.US
,然后设置回您保存的Locale
,
但请确保您的应用不是多线程的。
你也可以使用
DecimalFormatSymbols.getInstance().setDecimalSeparator(".");
关于java - Java 中的 DecimalFormat applyPattern 不会覆盖语言环境设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201648/