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的大小.

只需对您的代码进行一些小的修改(为了清晰起见,使用一些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的大小.
经验分享 程序员 微信小程序 职场和发展