Java:简单的BigDecimal逻辑错误
我有一段简单的代码,它的行为不正常 这段代码试图添加一个bigdecimal数组,然后除以array.length以找到平均值。但是,算法的第一阶段无法正确地将数组相加(在变量“sum”中) 我确信这是一个简单的错误,但我已经厌倦了处理这个问题,提前谢谢。返回总和,但不会改变它。这样做:Java:简单的BigDecimal逻辑错误,java,bigdecimal,Java,Bigdecimal,我有一段简单的代码,它的行为不正常 这段代码试图添加一个bigdecimal数组,然后除以array.length以找到平均值。但是,算法的第一阶段无法正确地将数组相加(在变量“sum”中) 我确信这是一个简单的错误,但我已经厌倦了处理这个问题,提前谢谢。返回总和,但不会改变它。这样做: sum = sum.add(heights[a]); 对象是不可变的,其所有修改其值的方法都返回一个新的BigDecimal对象。新创建的对象包含修改的值 您需要这样做: sum = sum.add(heig
sum = sum.add(heights[a]);
对象是不可变的,其所有修改其值的方法都返回一个新的BigDecimal
对象。新创建的对象包含修改的值
您需要这样做:
sum = sum.add(heights[a]);
这也适用于
setScale()
和divide()
操作将sum的加法操作的结果值分配回变量sum
for (int a = 0; a < heights.length; a++)
{
sum = sum + heights[a];
System.out.println("Height[" + a + "] = " + heights[a]);
System.out.println("Sum = " + sum.setScale(2, BigDecimal.ROUND_HALF_UP));
}
for(int a=0;a
ole不可变值类问题。。。是的,这是新玩家的陷阱,我们程序员都是新玩家。。。不断地开始,偶尔当我们获得经验时。叹气。为了便于将来参考,您的问题可以通过阅读Javadoc来解决。
sum = sum.add(heights[a]);
for (int a = 0; a < heights.length; a++)
{
sum = sum + heights[a];
System.out.println("Height[" + a + "] = " + heights[a]);
System.out.println("Sum = " + sum.setScale(2, BigDecimal.ROUND_HALF_UP));
}