概述
BigDecimal的最大值,最小值,中位数,排序操作
由于使用double数组对数据进行操作会引起精度损失,所以使用BigDecimal
进行计算
package com.test.annotation.test.test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 平均值 中位数 百分位数 最大值 最小值 方差
*/
public class TestBigDecimal {
public static void main(String[] args) {
// DecimalFormat df = new DecimalFormat();
// df.setMaximumFractionDigits(2);
// System.out.println( "avg "+df.format(avg(getBigDecimal())));
// System.out.println("max " + max(getBigDecimal()));
// System.out.println("min " + min(getBigDecimal()));
// sort(getBigDecimal());
median(getBigDecimal());
}
/**
* 中位数
*/
public static BigDecimal median(List<BigDecimal> list) {
if(null ==list)return null;
Collections.sort(list);
int size = list.size();
if (size % 2 == 1) {
return list.get((size - 1) / 2);
} else {
return (list.get(size/2-1).add(list.get(size/2))).divide(new BigDecimal(2),3);
}
}
/**
* 排序
*/
public static List<BigDecimal> sort(List<BigDecimal> list) {
if(null ==list)return null;
Collections.sort(list);
return list;
}
/**
* 最大值
*/
public static BigDecimal max(List<BigDecimal> list) {
if(null ==list)return null;
// BigDecimal max = Collections.max(list);
BigDecimal sum = list.get(0);
for (int i = 1; i < list.size(); i++) {
sum = sum.max(list.get(i));
}
return sum;
}
/**
* 最小值
*/
public static BigDecimal min(List<BigDecimal> list) {
if(null ==list)return null;
// BigDecimal min = Collections.min(list);
BigDecimal sum = list.get(0);
for (int i = 1; i < list.size(); i++) {
sum = sum.min(list.get(i));
}
return sum;
}
/**
* 平均值
*
* @return
*/
public static BigDecimal avg(List<BigDecimal> list) {
if(null ==list)return null;
BigDecimal sum = list.get(0);
for (int i = 1; i < list.size(); i++) {
sum = sum.add(list.get(i));
}
BigDecimal sum1 = new BigDecimal(list.size());
BigDecimal avg = sum.divide(sum1, 2);
System.out.println(avg);
return avg;
}
public static List<BigDecimal> getBigDecimal() {
List<String> list = new ArrayList();
list.add("2.3");
list.add("2.3000");
list.add("2.8974");
list.add("2.5");
list.add("2.5");
list.add("2.7");
list.add("2.4");
list.add("2.6");
List<BigDecimal> list1 = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
list1.add(new BigDecimal(list.get(i)));
}
return list1;
}
}
最后
以上就是内向铃铛为你收集整理的BigDecimal的最大值,最小值,中位数,排序操作的全部内容,希望文章能够帮你解决BigDecimal的最大值,最小值,中位数,排序操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复