Java大十进制问题

use*_*189 2 java bigdecimal

我正在使用java大小数如下:

class test bigDecimal{

private BigDecimal decimalResult;


    public boolean iterate(String value) {
        if (value == null) {
            return true;
        }

        System.out.println("value is: " + value);

        BigDecimal temp = new BigDecimal(value);

        System.out.println("temp val is: " + temp);
        if (decimalResult == null) {
            decimalResult = temp;
        } else {
            decimalResult = decimalResult.add(temp);
        }

        return true;
    }
Run Code Online (Sandbox Code Playgroud)

}

我用来创建大十进制的所有字符串的比例为6.例如:123456.678000,456789.567890

但是如果我给出一个大的字符串列表作为输入并检查总和,我得到小数点后8位数的输出.例如.类似的东西:2939166.38847228.

我想知道为什么BigDecimal会改变这种规模?我的所有输入都是6的比例.

任何投入都表示赞赏.-谢谢

Flo*_*ver 6

请阅读BigDecimal的javadoc:http: //download.oracle.com/javase/6/docs/api/java/math/BigDecimal.html 内部所有BigDecimal都转换为某种内部格式.

如果您想获得特定格式,则必须将其称为合适格式.例如,您可以使用scaleByPowerOfTen(int n)n = 6

哦,顺便说一句,从不使用new BigDecimal,BigDecimal.valueOf改为使用.

编辑:

NumberFormat numberFormat = NumberFormat.getInstance(); // use a locale here String formated = df.format(myUnformatedBigDecimal);