java数字处理工具类



import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Map;

import org.apache.commons.jexl2.*;

public class NumberTool {
private static final int FourDecimalMedian = 4; //小数位数

/**
* 将object转换成整型,当传入的对象是null时返回指定的值
* @param o
* @param dv
* @return
*/
public static Integer safeToInteger(Object o, Integer dv){
Integer r = dv;
if (o != null){
try{
r = new Integer(String.valueOf(o));
}
catch (Exception ex){}
}
return r;
}

/**
* 将object转换成整型,当传入的对象是null时返回指定的值
* @param o
* @param dv
* @return
*/
public static Double safeToDouble(Object o, Double dv){
Double r = dv;
if (o != null){
try{
r = new Double(String.valueOf(o));
}
catch(Exception ex){}
}
return r;
}

/**
* 将object转换成整型,当传入的对象是null时返回指定的值
* @param o
* @param dv
* @return
*/
public static Float safeToFloat(Object o, Float dv){
Float r = dv;
if (o != null){
try{
r = new Float(String.valueOf(o));
}
catch(Exception ex){}
}
return r;
}

/**
* String类型 转 BigDecimal类型
*
* @return paraValue
*/
public static BigDecimal stringToBigDecimal(String paraValue) {
try {
BigDecimal bDecimal = null;
if (paraValue.indexOf("%") == -1) {
return new BigDecimal(Double.valueOf(paraValue.trim().replace(",", ""))).setScale(4, BigDecimal.ROUND_HALF_UP);
} else {
return new BigDecimal(Double.valueOf(paraValue.trim().replace("%", "")) / 100).setScale(FourDecimalMedian, BigDecimal.ROUND_HALF_UP);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
* String类型 转 BigDecimal类型
*
* @return paraValue
*/
public static BigDecimal stringToBigDecimalTwoSpilt(String paraValue) {
try {
BigDecimal bDecimal = null;
if (paraValue.indexOf("%") == -1) {
return new BigDecimal(Double.valueOf(paraValue.trim().replace(",", ""))).setScale(2, BigDecimal.ROUND_HALF_UP);
} else {
return new BigDecimal(Double.valueOf(paraValue.trim().replace("%", "")) / 100).setScale(FourDecimalMedian, BigDecimal.ROUND_HALF_UP);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
* aParaValue值 - bParaValue值
*
* @return BigDecimal
*/
public static BigDecimal aSubtractB(BigDecimal aParaValue, BigDecimal bParaValue) {
try {
return aParaValue.subtract(bParaValue).setScale(FourDecimalMedian, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
* aParaValue值 / bParaValue值
*
* @return BigDecimal
*/
public static BigDecimal aDivideB(BigDecimal aParaValue, BigDecimal bParaValue) {
try {
return aParaValue.divide(bParaValue, FourDecimalMedian).setScale(FourDecimalMedian, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

public static BigDecimal formulaCalculation(String _formula, Map _formulaProperties, String[] indList) {
JexlContext _jexlContext = new MapContext();
for (String _indicatorCode : indList) {
_jexlContext.set("a" + _indicatorCode, (BigDecimal) _formulaProperties.get(_indicatorCode));
_formula = _formula.replaceFirst(_indicatorCode, "a" + _indicatorCode);
}
JexlEngine _jexlEngine = new JexlEngine();
Expression _expression = _jexlEngine.createExpression(_formula);
Object obj = (Object) _expression.evaluate(_jexlContext);
if (obj.getClass().toString().indexOf("Double") != -1) {
Double result = (Double) obj;
return BigDecimal.valueOf(result);
}
return (BigDecimal) _expression.evaluate(_jexlContext);
}

public static BigDecimal formulaCalculationDouble(String _formula, Map _formulaProperties, String[] indList) {
JexlContext _jexlContext = new MapContext();
for (String _indicatorCode : indList) {
_jexlContext.set("a" + _indicatorCode, (BigDecimal) _formulaProperties.get(_indicatorCode));
_formula = _formula.replaceFirst(_indicatorCode, "a" + _indicatorCode);
}
JexlEngine _jexlEngine = new JexlEngine();
Expression _expression = _jexlEngine.createExpression(_formula);
Double returnVal = (Double) _expression.evaluate(_jexlContext);
return BigDecimal.valueOf(returnVal);
}


public static double avg(double[] sequenceArr) {
if (sequenceArr != null && sequenceArr.length > 0) {
double sum = 0.00;
int T = sequenceArr.length;
for (int i = 0; i < T; i++) {
sum += sequenceArr[i];
}
return sum / T;
}
return 0.00;
}

public static double round(double value, int count) {
int t = (int) Math.pow(10.0, (double) (count + 1));
return ((double) Math.round(value * t)) / t;
}


public static Double getFourDecimalNumber(Number number) {
if (number == null || (0.00 == number.doubleValue())) {
return 0.0000;
}
NumberFormat format = new DecimalFormat("##0.0000");
return Double.valueOf(format.format(number));
}

/**
* 从指定Map中获取指定Key的 值,并将期值转为Integer型,若Map中指定Key不存在,则直接返回默认值
*
* @param map Map
* @param key Key
* @param defaultValue 默认值
* @return 将Map值转换后的Integer值,若不存在则返回默认值
*/
public static Integer convertMapKeyToInt(Map map, String key, Integer defaultValue) {
return safeToInteger(map.get(key), defaultValue);
}

/**
* 从指定Map中获取指定Key的值,并将期值转为Integer型,若Map中指定Key不存在,则直接返回0
*
* @param map Map
* @param key Key
* @return 将Map值转换后的Integer值,若不存在则返回0
*/
public static Integer convertMapKeyToInt(Map map, String key) {
return convertMapKeyToInt(map, key, 0);
}

/**
* 将int数组转换成以逗号分隔的字符串
* @param intArray
* @return
*/
public static String convertIntArrayToString(int[] intArray)
{
if (intArray.length <= 0)
return "";
String _string = "";
for (int _int : intArray) {
_string += _string.equals("") ? new Integer(_int).toString() : "," + new Integer(_int).toString() ;
}
return _string;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值