bigdecimal 平均数_用Java计算平均值

博客介绍了计算平均数的代码实现。最初使用double类型累加求和再计算平均数,循环可简化。后考虑到整数/双精度溢出问题,使用BigDecimal类型累加,该方法能保持精度,消除溢出可能性,但速度较慢,不适合时间紧迫的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小编典典

只需对您的代码进行一些小的修改即可(为了清楚起见,使用了一些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 ) );

}

这种方法有几个优点(尽管速度较慢,所以不要将其用于时间紧迫的操作):

保持精度,将精度加倍,您将逐渐降低数学运算数量的精度(或完全不获得精确的精度,具体取决于数字)

实际上消除了溢出的可能性。但是请注意,a BigDecimal可能大于a double或的大小long。

2020-10-16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值