Android DecimalFormat舍入错误:添加了随机小数

时间:2015-07-23 19:35:47

标签: android format number-formatting

我正在尝试格式化数字。它可以有2到6的十进制数。

如果我传递一个没有小数的数字,结果就可以了。 否则它会添加随机小数。

    float value = ...;

    DecimalFormat formatter_currency = new DecimalFormat();
    DecimalFormatSymbols nf = new DecimalFormatSymbols();  

    nf.setDecimalSeparator('.');
    nf.setGroupingSeparator(',');

    formatter_currency.setDecimalFormatSymbols(nf);
    formatter_currency.setMaximumFractionDigits(8);
    formatter_currency.setMinimumFractionDigits(2);

    return formatter_currency.format(value);

例如: 值= 35 - > 35.00

值= 35.6 - > 35.65932558(预计35.60)

值= 35.659 - > 35.68899918(预计35.659)

我读过浮点变量可能存在问题。 我尝试过双倍,但结果是一样的。

我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

我写了这个快速测试程序,似乎通过了所有的测试用例:

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

public class FormatTest { 
    public static void main(String[] args) { 
        double value = 35.659;

        DecimalFormat formatter_currency = new DecimalFormat();
        DecimalFormatSymbols nf = new DecimalFormatSymbols();  

        nf.setDecimalSeparator('.');
        nf.setGroupingSeparator(',');

        formatter_currency.setDecimalFormatSymbols(nf);
        formatter_currency.setMaximumFractionDigits(8);
        formatter_currency.setMinimumFractionDigits(2);

        System.out.println(formatter_currency.format(value));
    }
}

请尝试在您的计算机上进行编译并尝试输入不同的值。我基本上只是用double而不是float来尝试。如果您看到与上面发布的代码相同的结果,请与我们联系。