DecimalFormat与0.0 BigDecimal表现奇怪

时间:2017-04-28 10:27:27

标签: java

我正在使用货币,获取管道分隔文件,对其执行数学转换并将其另存为CSV文件。输出货币必须与17位和2位小数的格式相匹配。因此我使用的是DecimalFormat:DecimalFormat df = new DecimalFormat("00000000000000000.######");

如果我有非零货币,我希望通过以下StringBuilder附加货币:

sb.append(FormatString(df.format(event.value), true));

其中FormatString是:

private String FormatString( String value, boolean addDelim)
{
    value = value == null ? "" : value.replace(delimiter, "");

    if (addDelim)
        value += delimiter;

    return value;
}

输出很好; -256.07的值为-00000000000000256.07等。但是,如果值为0.0,则表示为00000000000000000且没有小数点。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

#会抑制任何非有效数字。 "00000000000000000.0#####"模式最终会确保.0,即使小数部分没有任何非零数字。