Java实现若干个数计算平均值并保留小数位 java计算平均值 java四舍五入保留小数
Java实现若干个数计算平均值并保留小数位 java计算平均值 java四舍五入保留小数
一、需求
1、在项目中,要计算若干个指标的平均值,找了一圈,发现JDK中没有提供,于是乎,造一个。
2、因若干个指标不确定,这里使用可变参数来表示,易于参数传递。
3、因求取平均值后,可能会有若干位小数,需要对小数位进行处理,分别使用 java.math.BigDecimal 和 java.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四舍五入保留小数相关推荐
- java求一个数的阶乘_Java如何使用方法计算一个数字的阶乘值?
在Java中,如何使用方法来计算一个数字的阶乘值? 这个例子显示了使用9(9)数字的因子计算方法. package com.yiibai; public class CalculatingFactor ...
- Java中的浮点数四舍五入到小数点后2位的一些实用方法
前言 四舍五入到2或3个小数位是我们Java程序员日常开发中肯定会遇到.幸运的是,Java API提供了几种在Java中舍入数字的方法 我们可以使用Math.round(),BigDecimal或De ...
- Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差
7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...
- java利用数组求平均值_Java程序使用数组计算平均值
Java程序使用数组计算平均值 在此程序中,您将学习计算Java中给定数组的平均值. 示例:使用数组计算平均值的程序 public class Average { public static void ...
- java编程用户输入两个数字_编写一个Java应用程序,要求从键盘输入两个整数,计算这两个数据...,编写一个Java应用程序,要求从键盘输入一个数,判断该数是不...
导航:网站首页 > 编写一个Java应用程序,要求从键盘输入两个整数,计算这两个数据...,编写一个Java应用程序,要求从键盘输入一个数,判断该数是不 编写一个Java应用程序,要求从键盘输入 ...
- 求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)
package Four; /** 分解质因数* 素数常用来分解质因数,每个数都可以写成一个或几个质数相乘的形式* 其中每个质数都是这个数的质因数,把一个数用质因数相乘的形式表示出来,* 就称为分解质 ...
- java计算二叉树的节点最小值_java计算二叉树的高度以及叶节点个数
java实现二叉树的相关操作 代码如下 package 二叉树有关; import java.util.ArrayDeque; import java.util.Queue; public class ...
- Java基础篇--多线程之第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数
多线程操作: 编写一个有两个线程的程序,第一个线程用来计算2-100000之间的素数的个数,第二个线程用来计算100000-200000之间的素数的个数,最后输出结果. 1.判断是否为素数的方法: 是 ...
- Java 小数点计算和四舍五入保留两位数
参考代码 BigDecimal decimal1 = new BigDecimal(12732); BigDecimal decimal2 = decimal1.divide(new BigDecim ...
最新文章
- Android 动画分析学习笔记
- 手动用hibernate-validator校验入参
- C语言输出长方柱的体积,需要求3个长方柱的体积,请编写一个基于对象的程序。数据成员包括length(长)、width(宽)、 height(高)。要求用成员函数实现以下功能...
- android 移除fragment,Android Viewpager+Fragment取消预加载及Fragment方法的学习
- .net mvc html使用方法,C# ASP.NET MVC HtmlHelper用法汇总
- myeclipse连接mysql生成数据表时中文字符乱码或问号(解决方法)
- #CSP 201512-1 数位之和(100分)
- linux开启权限继承,linux的一个权限问题(权限继承)
- Spring Cloud之服务治理(注册发现)
- crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
- SQL Server 2005系列教学(12) 导入导出服务
- 微型计算机的构成部件6,谈谈微机的主要部件与指标
- 02_行销(Marketing)里用逻辑回归来找寻顾客参与度后面的原因
- 【知识图谱】08KBQA问答系统(python+fuseki+jena)
- BF-5R对讲机改频
- XML配置文件的读取
- 网页链接如何做成html,html网页的超链接怎么添加?
- Springboot实现发送邮箱
- 11部程序员大电影你看过几个?
- DSP营销百亿点击量背后原理竟然是这样
热门文章
- Python爬虫获取企查查公开的企业信息
- (ECCV-2018)用于视频识别的多光纤网络
- 汽车诊断之UDS入门-0x11(ECUReset)ECU重置
- HDUOJ1865 1string
- 力扣(88.53)补8.31
- 225页10万字政务大数据能力平台项目建议书
- 机器学习笔记~图像的空间分辨率
- 计算机教子好考吗,考进985的孩子:父母都是这样教育孩子,这些方法比刷题管用...
- kotlin开发Android入门篇八Kotlin开发Android的基本使用
- python编程控制机器人_python程序控制NAO机器人行走