获取包含复数小数的数组列表的总和

时间:2014-01-26 21:12:58

标签: java math arraylist bigdecimal

我是Java的新手,并寻求一些帮助。我有一个数组列表如下:

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.我的问​​题是如何才能实现这一点,所以我的答案是正确的?

3 个答案:

答案 0 :(得分:1)

sumLeft定义为double。这将解决您的问题。

引擎盖sumLeft += i;做了像

这样的事情

sumLeft = sumLeft + (int)i;

因此你看到了问题。

答案 1 :(得分:0)

将sumLeft定义为double将解决您的问题。

请注意,虽然计算机术语中的双打精度有限,但会以奇怪的方式表示您的数字。如果精度很重要,则需要使用BigDecimal等内容。

http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding

答案 2 :(得分:0)

正如您可能知道的那样,int表示&#34;整数&#34;,即没有小数分量的整数。语言有时会进行隐式类型转换,因此当存储值的变量是int时,当数字类型为double时,小数点后面的部分会被切断。< / p>

正如其他人所说,将sumLeft改为双倍会避免这种情况。