编程题【BigDecimal类】
求以下double数组的平均值(四舍五入保留两位小数):
double[ ] arr = {0.1,0.2,2.1,3.2,5.56,7.21};
一开始我的做法是用 double sum来求和,这样显然是不精确的,下面举了个例子
例子:
正确答案 附上代码: package com.itheima.demo3; import java.math.BigDecimal; public class Demo01 { public static void main(String[] args) { double[] arr = {0.1, 0.2, 2.1, 3.2, 5.56, 7.21}; BigDecimal sum = new BigDecimal("0.0");//用string类型的0.0来初始化sum for (int i = 0; i < arr.length; i++) { //String.valueOf(double d):将 double变量 d 转换成字符串 //因为BigDecimal的接收参数为字符串类型 String str = String.valueOf(arr[i]); /* BigDecimal bd1 = new BigDecimal(String.valueOf(arr[0])); sum.add(bd1);*/ sum = sum.add(new BigDecimal(String.valueOf(arr[i]))); } BigDecimal bd2=new BigDecimal(String.valueOf(arr.length)); System.out.println(sum.divide(bd2, 2, BigDecimal.ROUND_HALF_UP)); } }
这道题的String.valueOf 起到了很大的作用,就是将double变量转成字符串,只有这样才能在BigDecimal中精确的运用,当然还有BigDecimal初始化、遍历求和中的一些语法小细节。