Java实现若干个数计算平均值并保留小数位 java计算平均值 java四舍五入保留小数

一、需求

1、在项目中,要计算若干个指标的平均值,找了一圈,发现JDK中没有提供,于是乎,造一个。

2、因若干个指标不确定,这里使用可变参数来表示,易于参数传递。

3、因求取平均值后,可能会有若干位小数,需要对小数位进行处理,分别使用 java.math.BigDecimaljava.text.DecimalFormat 对小数位进行处理,都可以实现需求。

二、代码实现

1、以 四舍五入模式,保留若干位小数。

/*** description: java 实现若干个数计算平均值,并 四舍五入模式,保留若干位小数。* @param scale 保留小数的个数 * @param nums 若干个字符数字* @return Double* @version v1.0* @author w* @date 2019年10月25日 下午9:53:07*/
public static Double average(int scale ,String ...nums) {if(ArrayUtils.isEmpty(nums)) {return null;}Double sum  = 0D;for (String num : nums) {sum += Double.valueOf(num);}BigDecimal decimal = BigDecimal.valueOf(sum/nums.length).setScale(scale, RoundingMode.HALF_UP);return decimal.doubleValue();
}

2、 小数位取舍办法,以 RoundingMode 为准。

/*** description: java 实现若干个数计算平均值,保留若干位小数。 --- 小数位取舍办法,以 RoundingMode 为准。* @param scale  保留小数的个数 * @param roundingMode 小数取舍的模式。 向上、向下、四舍五入 等。* @param nums 若干个字符数字* @return Double* @version v1.0* @author w* @date 2019年10月25日 下午9:55:42*/
public static Double average(int scale ,RoundingMode roundingMode,String ...nums) {if(ArrayUtils.isEmpty(nums)) {return null;}Double sum  = 0D;for (String num : nums) {sum += Double.valueOf(num);}BigDecimal decimal = BigDecimal.valueOf(sum/nums.length).setScale(scale, roundingMode);return decimal.doubleValue();
}

3、使用 DecimalFormat 实现数字格式化。

/*** description: java 实现若干个数计算平均值,保留若干位小数。 --- 使用 DecimalFormat 实现数字格式化。* @param pattern  格式化模式* @param nums nums 若干个字符数字* @return String* @version v1.0* @author w* @date 2019年10月26日 上午9:25:44*/
public static String average(String pattern , String ...nums) {if(ArrayUtils.isEmpty(nums)) {return null;}Double sum  = 0D;for (String num : nums) {sum += Double.valueOf(num);}DecimalFormat decimalFormat = new DecimalFormat(pattern);String format = decimalFormat.format(sum/nums.length);return format ;
}

4、测试:

@Test
public void test() {Double average = average(2,"2.3","2.2","3.153");System.out.println(average);String average2 = average("#.######" ,"2.33","2.24","3.452");System.out.println("average2:"+ average2);// DecimalFormat 中 "#"和"0"的区别: "#"位数不够为空,"0"位数不够,补0.String average3 = average("#.000000" ,"2.3","2.2","3.33532");System.out.println("average3:"+ average3);
}

5、结果如下:

2.55

average2:2.674

average3:2.611773

三、总结

1、上面任意一个方法,都可以实现若干个数计算平均值,对小数位的处理,分别使用了两个不同的类来进行处理。 还有 String.format()应该也可以实现需求。

2、ArrayUtils 类,来自于 apache commons-lang3 包 。

java BigDecimal 遇到的坑 BigDecimal 注意点事项 BigDecimal 比较大小

Java实现若干个数计算平均值并保留小数位 java计算平均值 java四舍五入保留小数相关推荐

  1. java求一个数的阶乘_Java如何使用方法计算一个数字的阶乘值?

    在Java中,如何使用方法来计算一个数字的阶乘值? 这个例子显示了使用9(9)数字的因子计算方法. package com.yiibai; public class CalculatingFactor ...

  2. Java中的浮点数四舍五入到小数点后2位的一些实用方法

    前言 四舍五入到2或3个小数位是我们Java程序员日常开发中肯定会遇到.幸运的是,Java API提供了几种在Java中舍入数字的方法 我们可以使用Math.round(),BigDecimal或De ...

  3. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差

    7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...

  4. java利用数组求平均值_Java程序使用数组计算平均值

    Java程序使用数组计算平均值 在此程序中,您将学习计算Java中给定数组的平均值. 示例:使用数组计算平均值的程序 public class Average { public static void ...

  5. java编程用户输入两个数字_编写一个Java应用程序,要求从键盘输入两个整数,计算这两个数据...,编写一个Java应用程序,要求从键盘输入一个数,判断该数是不...

    导航:网站首页 > 编写一个Java应用程序,要求从键盘输入两个整数,计算这两个数据...,编写一个Java应用程序,要求从键盘输入一个数,判断该数是不 编写一个Java应用程序,要求从键盘输入 ...

  6. 求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)

    package Four; /** 分解质因数* 素数常用来分解质因数,每个数都可以写成一个或几个质数相乘的形式* 其中每个质数都是这个数的质因数,把一个数用质因数相乘的形式表示出来,* 就称为分解质 ...

  7. java计算二叉树的节点最小值_java计算二叉树的高度以及叶节点个数

    java实现二叉树的相关操作 代码如下 package 二叉树有关; import java.util.ArrayDeque; import java.util.Queue; public class ...

  8. Java基础篇--多线程之第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数

    多线程操作: 编写一个有两个线程的程序,第一个线程用来计算2-100000之间的素数的个数,第二个线程用来计算100000-200000之间的素数的个数,最后输出结果. 1.判断是否为素数的方法: 是 ...

  9. Java 小数点计算和四舍五入保留两位数

    参考代码 BigDecimal decimal1 = new BigDecimal(12732); BigDecimal decimal2 = decimal1.divide(new BigDecim ...

最新文章

  1. Android 动画分析学习笔记
  2. 手动用hibernate-validator校验入参
  3. C语言输出长方柱的体积,需要求3个长方柱的体积,请编写一个基于对象的程序。数据成员包括length(长)、width(宽)、 height(高)。要求用成员函数实现以下功能...
  4. android 移除fragment,Android Viewpager+Fragment取消预加载及Fragment方法的学习
  5. .net mvc html使用方法,C# ASP.NET MVC HtmlHelper用法汇总
  6. myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法)
  7. #CSP 201512-1 数位之和(100分)
  8. linux开启权限继承,linux的一个权限问题(权限继承)
  9. Spring Cloud之服务治理(注册发现)
  10. crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
  11. SQL Server 2005系列教学(12) 导入导出服务
  12. 微型计算机的构成部件6,谈谈微机的主要部件与指标
  13. 02_行销(Marketing)里用逻辑回归来找寻顾客参与度后面的原因
  14. 【知识图谱】08KBQA问答系统(python+fuseki+jena)
  15. BF-5R对讲机改频
  16. XML配置文件的读取
  17. 网页链接如何做成html,html网页的超链接怎么添加?
  18. Springboot实现发送邮箱
  19. 11部程序员大电影你看过几个?
  20. DSP营销百亿点击量背后原理竟然是这样

热门文章

  1. Python爬虫获取企查查公开的企业信息
  2. (ECCV-2018)用于视频识别的多光纤网络
  3. 汽车诊断之UDS入门-0x11(ECUReset)ECU重置
  4. HDUOJ1865 1string
  5. 力扣(88.53)补8.31
  6. 225页10万字政务大数据能力平台项目建议书
  7. 机器学习笔记~图像的空间分辨率
  8. 计算机教子好考吗,考进985的孩子:父母都是这样教育孩子,这些方法比刷题管用...
  9. kotlin开发Android入门篇八Kotlin开发Android的基本使用
  10. python编程控制机器人_python程序控制NAO机器人行走