java 均值_计算java中的平均值

只需对您的代码进行一些小的修改(为了清晰起见,使用一些var重命名):

double sum = 0; //average will have decimal point

for(int i=0; i < args.length; i++){

//parse string to double, note that this might fail if you encounter a non-numeric string

//Note that we could also do Integer.valueOf( args[i] ) but this is more flexible

sum += Double.valueOf( args[i] );

}

double average = sum/args.length;

System.out.println(average );

请注意,循环也可以简化:

for(String arg : args){

sum += Double.valueOf( arg );

}

编辑:OP似乎想要使用args数组.这似乎是一个String数组,因此相应地更新了答案.

更新:

正如zoxqoj正确指出的那样,上面的代码中没有处理整数/双溢出.虽然我假设输入值足够小,不会出现这个问题,但这里有一个用于非常大的输入值的片段:

BigDecimal sum = BigDecimal.ZERO;

for(String arg : args){

sum = sum.add( new BigDecimal( arg ) );

}

这种方法有几个优点(尽管速度稍慢,所以不要将它用于时间关键操作):

>保持精度,双精度,你将逐渐松开精度与数学运算的数量(或根本不是精确的精度,取决于数字)>实际上消除了溢出的可能性.但请注意,BigDecimal可能大于double或long的大小.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值