封装的对数据处理的方法

/**
 * CRDS系统函数库,用于配置crdsFunctions.tld文件,便于页面采用EL表达式调用
 * @version : 1.0
 * @author : houtingsong(MaCi Hotesion)
 * @date : Jun 9, 2009 12:08:20 PM
 * @email : houtingsong163@163.com
 */
public class CRDSFunctions {
	/** 财务比率预警颜色 */
	private static final String finRatioAlarmColor = "red";
	
	/**
	 * 格式化一个字符串数字,当参数divNumber和mulNumber同时输入时,divNumber计算优先,忽略mulNumber的计算,即参数divNumber和mulNumber只能传一个或都不传.
	 * @param number 将要被格式化的字符串数字,如果为null或"",则为0;
	 * @param divNumber 除数字符串数字, 如果不为空,则将number除以divNumber运算之后再进行格式化
	 * @param mulNumber 乘数字符串数字, 如果不为空,则将number乘以mulNumber运算之后再进行格式化
	 * @param pointSize 要保留的小数点位数
	 * @param isSeparated 整数部分是否进行逗号分割,1[分割],0[不分割],如1,234,882.001;
	 * @param isFilledZero 当小数点实际位数不足pointSize时,是否在后面补0,1[补0],0[不补0];
	 * @param nezProcess 整数number为0、""、null时的处理,0[""、null时返回"",0时返回0],1[""、null时返回0,0时返回""],2[0、null、""视为""]、3[0、null、""视为"0"];
	 * @param divZeroProcess 当除数为0时的处理,N-(不做乘积计算,但继续做格式化操作),Y-(继续做乘积计算,然后做格式化操作),其它值-(返回这个值);当且仅当参数divNumber="0"时,此参数有效
	 * ex:<br>
	 * numberFormat("0","","",8,0,0,3,0)			return 0;//数字部分为空或0则当作0来处理,必须有8位小数点,不足8位则不追加0<br>
	 * numberFormat("","","",8,1,0,3,0)				return 0.00000000;//数字部分为空或0则当作0来处理,必须有8位小数点,不足8位则追加0<br>
	 * numberFormat("0","","",8,0,0,2,0)			return 0;//数字部分无论是0或空则返回""<br>
	 * numberFormat("","","",8,0,0,2,0)				return 0;//数字部分无论是0或空则返回""<br>
	 * numberFormat("0","","",8,0,0,1,0)			return 0;//数字部分为0则返回""<br>
	 * numberFormat("","","",8,0,1,0,0)				return 0;//数字部分为空则当作""<br>
	 * numberFormat("4123.012","","",8,0,1,2,0)		return 4123.01200000;//必须有8位小数点,不足8位则追加0<br>
	 * numberFormat("4123.012","","",8,0,0,2,0)		return 4123.012;//8位小数点,不足8位则不追加0<br>
	 * numberFormat("4123.012","","",8,1,1,2,0)		return 4,123.01200000;//整数部分以逗号分割,8位小数点,不足8位则追加0<br>
	 * numberFormat("4123.012","","",8,1,0,2,0)		return 4,123.012;//整数部分以逗号分割,8位小数点,不足8位则不追加0<br>
	 * numberFormat("4123.012","100","",8,1,0,2,0)	return 41.23012;//除以100,整数部分以逗号分割,8位小数点,不足8位则不追加0<br>
	 * numberFormat("4123.012","100","",8,1,1,2,0)	return 41.23012000;//除以100,整数部分以逗号分割,8位小数点,不足8位则追加0<br>
	 * numberFormat("4123.012","","100",8,1,0,2,0)	return 412301.2;//乘以100,整数部分以逗号分割,8位小数点,不足8位则不追加0<br>
	 * numberFormat("4123.012","","100",8,1,1,2,0)	return 412301.20000000;//乘以100,整数部分以逗号分割,8位小数点,不足8位则追加0<br>
	 */
	public static String numberFormat(String number,String divNumber,String mulNumber,int pointSize,int isSeparated,int isFilledZero,int nezProcess,String divZeroProcess){
		String format = isSeparated==1 ? ",###" : "###";//5667
		number = CommonMethod.isNull(number) ? "":number.trim();
		if((number.length() > 0 && new BigDecimal(number).doubleValue()==0 && nezProcess==1) || (number.equals("") && nezProcess==0) || ((number.equals("")||(number.length() > 0 && new BigDecimal(number).doubleValue()==0))&& nezProcess==2))
			return "";
		else if(number.equals(""))
			number = "0";
		if(Double.parseDouble(number)==0.5)
			number = "0.50000000001";//0.5时,四舍五入不精确,特处理,如:0.5四舍五入后为1,但处理结果为0。
		
		BigDecimal big = new BigDecimal(number);
		if(-1 < big.doubleValue() && big.doubleValue() < 1)
			format += "0";
		String pointText = extendStr(pointSize,isFilledZero==1 ? "0":"#");
		format += pointText.length()>0 ? ("."+pointText) : "";
		//被乘除数处理
		divNumber = divNumber == null?"" : divNumber.trim();
		mulNumber = mulNumber == null?"" : mulNumber.trim();
		if(!"".equals(mulNumber)){
			if(!"".equals(divNumber)){
				if(Double.parseDouble(divNumber)==0){//除数未0时的处理
					if("Y".equals(divZeroProcess))//除数为0时是否继续作乘积计算
						big = big.multiply(new BigDecimal(mulNumber));
					else if(!"N".equals(divZeroProcess))
						return divZeroProcess;
				} else {//除数不为0则同时做乘除计算
					big = big.multiply(new BigDecimal(mulNumber));
					big = big.divide(new BigDecimal(divNumber),20,BigDecimal.ROUND_HALF_UP);
				}
			} else {//未传入除数则只做乘积计算
				big = big.multiply(new BigDecimal(mulNumber));
			}
		} else if(!"".equals(divNumber)){
			if(Double.parseDouble(divNumber)!=0)
				big = big.divide(new BigDecimal(divNumber),20,BigDecimal.ROUND_HALF_UP);
			else if(!"Y".equals(divZeroProcess) && !"N".equals(divZeroProcess))
				return divZeroProcess;
		}
		return new DecimalFormat(format).format(big);
	}
	
	/**
	 * 格式化一个字符串数字,当参数divNumber和mulNumber同时输入时,divNumber计算优先,忽略mulNumber的计算,即参数divNumber和mulNumber只能传一个或都不传.
	 * @param number 将要被格式化的字符串数字,如果为null或"",则为0;
	 * @param pointSize 要保留的小数点位数
	 * @param isSeparated 整数部分是否进行逗号分割,1[分割],0[不分割],如1,234,882.001;
	 * @param isFilledZero 当小数点实际位数不足pointSize时,是否在后面填补0,1[补0],0[不补0];
	 * @param intZeroProcess 整数number为0、""、null时的处理,0[""、null时返回""],1[0变为"",返回""],2[0、null、""视为""]、3[0、null、""视为"0"];
	 * ex:<br>
	 * decimalFormat("-0",8,0,1,2)		return 0.00000000;//必须有8位小数点,不足8位则追加0<br>
	 * decimalFormat("-0",8,0,0,2)		return 0;//必须有8位小数点,不足8位则不追加0<br>
	 * decimalFormat("-0",8,0,0,1)		return "";//必须有8位小数点,不足8位则不追加0<br>
	 * decimalFormat("",8,0,0,0)		return "";//必须有8位小数点,不足8位则不追加0<br>
	 * decimalFormat("4123.012",8,0,1,1)	return 4123.01200000;//必须有8位小数点,不足8位则追加0<br>
	 * decimalFormat("4123.012",8,0,0,1)	return 4123.012;//8位小数点,不足8位则不追加0<br>
	 * decimalFormat("4123.012",8,1,1,1)	return 4,123.01200000;//整数部分以逗号分割,8位小数点,不足8位则追加0<br>
	 * decimalFormat("4123.012",8,1,0,1)	return 4,123.012;//整数部分以逗号分割,8位小数点,不足8位则不追加0<br>
	 */
	public static String decimalFormat(String number,int pointSize,int isSeparated,int isFilledZero,int intZeroProcess){
		return numberFormat(number,null,null,pointSize,isSeparated,isFilledZero,intZeroProcess,"");
	}
	
	public static String numericFormat(String numValue,int scale,boolean isSeparated){
		if(null == numValue || (numValue=numValue.trim()).length()==0)
			return "0";
		BigDecimal big = new BigDecimal(numValue);
		String format = isSeparated ?",###":"###";
		if(-1 < big.doubleValue() && big.doubleValue() < 1)
			format += "0";
		String point = extendStr(scale,"#");
		format += point.length()==0 ? "" : ("."+point);
		return new java.text.DecimalFormat(format).format(big);
	}
	/**
	 * 将一个字符串扩展为number个字符串,然后返回扩展之后的字符串.如果beExtendStr为null则返回null;
	 * @param number 要扩展的数目
	 * @param beExtendStr 将要被扩展的字符串
	 * @author MaCi Hotesion<br>
	 * ex:<br>
	 * extendStr(5,null);	                //throws NullPointerException<br>
	 * extendStr(5,"") 		return ""; <br>
	 * extendStr(5,"#") 	return "#####";<br>
	 * extendStr(3,"234") 	return "234234234";<br>
	 */
	public static String extendStr(int number,String beExtendStr){
		if(number <= 0 || null == beExtendStr || beExtendStr.length()==0)
			return "";
		StringBuffer extendSB = new StringBuffer();
		for (int i = 0; i < number; i++)
			extendSB.append(beExtendStr);
		return extendSB.toString();
	}
	public static String NEVL(String value,String nullValue){
		return NEVL2(value,nullValue,value);
	}
	public static String NEVL2(String value,String nullValue,String notNullValue){
		return value==null || value.length()==0 ? nullValue:notNullValue;
	}
	public static void main(String[] args) {
		//System.out.println(new BigDecimal("-0.00").doubleValue()==0);
		System.out.println(numberFormat("1","3","",20,1,0,0,"Y"));
//		System.out.println(decimalFormat("0",2,1,1,0));
	}
	public static String numericFormat222(String numValue,int scale,boolean isSeparated){
		if(null == numValue || (numValue=numValue.trim()).length()==0)
			return null;
		BigDecimal big = new BigDecimal(numValue);
		String format = isSeparated ?",###":"###";
		if(-1 < big.doubleValue() && big.doubleValue() < 1)
			format += "0";
		String point = extendStr(scale,"#");
		format += point.length()==0 ? "" : ("."+point);
		return new java.text.DecimalFormat(format).format(big);
	}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值