Java 大十进制问题

标签 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;
    }

}

我用来创建大十进制的所有字符串的小数位数均为 6。例如:123456.678000、456789.567890

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

我想知道为什么 BigDecimal 会改变这个比例?我所有输入的比例均为 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();//此处使用区域设置 格式化字符串 = df.format(myUnformatedBigDecimal);

关于Java 大十进制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668026/

相关文章:

java - Spliterator Java 8 - 自定义实现

java - 河马 CMS 和 Jetspeed

java - 如何从 Intellij Maven 项目中永久删除模块?

java - 在 Java 中将两个数字精确相乘

java - 有没有办法将格式化的 BigDecimal 数字分配给 BigDecimal?

java - XMLSerializer 和 OutputFormat 已弃用

Java - 使用 JAMA 创建具有随机值的 3by3 矩阵

java - Java BigDecimal.remainder() 的问题 - 不合理且不准确的返回

java - 为什么 BigDecimal 的标度不是 BigInteger?

.NET、SQL Server、NHibernate 和高精度小数