我对爪哇的新手是新手,并在一些帮助下寻找。我的数组列表如下:
double number[]={19.1904990290,27.2646233344,51.4850317134}
我已经使用以下代码来汇总数组列表并将其打印到控制台:
int sumLeft = 0;
System.out.println("Contents of leftside: " + number);
for(double i: number) sumLeft += i;
System.out.println("sum(left) = " + sumLeft);
我的结果是97。我的问题是我如何执行此操作,以便我的答案正确?
将sumLeft
定义为double
。这将解决您的问题。
在引擎盖下 sumLeft += i;
做了
sumLeft = sumLeft + (int)i
;
因此,您看到的问题。
将sumleft定义为double将解决您的问题。
请注意,计算机术语的双倍数量有限,并且会以奇怪的方式表示您的数字。如果精度很重要,则需要使用诸如BigDecimal
。
http://en.wikipedia.org/wiki/floating_point#representable_numbers.2c_conversion_and_rounding
您可能知道, int
表示"整数",即没有分数组件的整数。语言有时会执行隐式类型转换,因此,当存储该值的变量为例如int
时,当您的数字类型double
时,小数点后的部分被切碎。
正如其他人所说的那样,将sumLeft
更改为双倍将避免这种情况。