java 数字工具类_Java工作利器之常用工具类(一)——数字工具类-数字转汉字...

//num 表示数字,lower表示小写,upper表示大写

private static final String[] num_lower = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };

private static final String[] num_upper = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

//unit 表示单位权值,lower表示小写,upper表示大写

private static final String[] unit_lower = { "", "十", "百", "千" };

private static final String[] unit_upper = { "", "拾", "佰", "仟"};

private static final String[] unit_common = {"","万", "亿","兆","京","垓","秭","穰","沟","涧","正","载"};

//允许的格式

private static final List promissTypes = Arrays.asList("INTEGER","INT","LONG","DECIMAL","FLOAT","DOUBLE","STRING","BYTE","TYPE","SHORT");

/**

* 数字转化为小写的汉字

*

* @param num 将要转化的数字

* @return

*/

public static String toChineseLower(Object num){

return format(num, num_lower, unit_lower);

}

/**

* 数字转化为大写的汉字

*

* @param num 将要转化的数字

* @return

*/

public static String toChineseUpper(Object num){

return format(num, num_upper, unit_upper);

}

/**

* 格式化数字

*

* @param num 原数字

* @param numArray 数字大小写数组

* @param unit 单位权值

* @return

*/

private static String format(Object num,String[] numArray,String[] unit){

if(!promissTypes.contains(num.getClass().getSimpleName().toUpperCase())){

throw new RuntimeException("不支持的格式类型");

}

//获取整数部分

String intnum = getInt(String.valueOf(num));

//获取小数部分

String decimal = getFraction(String.valueOf(num));

//格式化整数部分

String result = formatIntPart(intnum,numArray,unit);

if(!"".equals(decimal)){//小数部分不为空

//格式化小数

result += "点"+formatFractionalPart(decimal, numArray);

}

return result;

}

/**

* 格式化整数部分

*

* @param num 整数部分

* @param numArray 数字大小写数组

* @return

*/

private static String formatIntPart(String num,String[] numArray,String[] unit){

//按4位分割成不同的组(不足四位的前面补0)

Integer[] intnums = split2IntArray(num);

boolean zero = false;

StringBuffer sb = new StringBuffer();

for(int i=0;i

//格式化当前4位

String r = formatInt(intnums[i], numArray,unit);

if("".equals(r)){//

if((i+1)==intnums.length){

sb.append(numArray[0]);//结果中追加“零”

}else{

zero=true;

}

}else{//当前4位格式化结果不为空(即不为0)

if(zero || (i>0 && intnums[i]<1000)){//如果前4位为0,当前4位不为0

sb.append(numArray[0]);//结果中追加“零”

}

sb.append(r);

sb.append(unit_common[intnums.length-1-i]);//在结果中添加权值

zero=false;

}

}

return sb.toString();

}

/**

* 格式化小数部分

*

* @param decimal 小数部分

* @param numArray 数字大小写数组

* @return

*/

private static String formatFractionalPart(String decimal,String[] numArray) {

char[] val = String.valueOf(decimal).toCharArray();

int len = val.length;

StringBuilder sb = new StringBuilder();

for (int i = 0; i < len; i++) {

int n = Integer.valueOf(val[i] + "");

sb.append(numArray[n]);

}

return sb.toString();

}

拆分整数和小数的方法在这里:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/** * @project: WebProjectUtil * @class: NumberUtil * @describe: 此工具类用来处理数字方面的逻辑, * 如返回指定位数的随机数字、Double的加减乘除精确运算、指定位数数字用“0”补齐 * @autho: Administrator * @date: 2013-6-7 下午02:26:27 * @alter: Administrator * @alterDate: 2013-6-7 下午02:26:27 * @alterRemark: * @version V1.0 */ public class NumberUtil { private static final int DEF_DIV_SCALE = 2; /** * @return 返回12位随机数 */ public static String randomNumber() { } /** * @param parm * @return 返回指定位数随机数 */ public static String randomNumber(int parm) { } /** * * 两个Double数相加 * * @param v1 * @param v2 * @return Double */ public static Double add(Double v1, Double v2) { } /** * * 两个Double数相减 * * @param v1 * @param v2 * @return Double */ public static Double sub(Double v1, Double v2) { } /** * * 两个Double数相乘 * * @param v1 * @param v2 * @return Double */ public static Double mul(Double v1, Double v2) { } /** * * 两个Double数相除 * * @param v1 * @param v2 * @return Double */ public static Double div(Double v1, Double v2) { } /** * * 两个Double数相除,并保留scale位小数 * * @param v1 * @param v2 * @param scale * @return Double */ public static Double div(Double v1, Double v2, int scale) { } /** * 返回指定Double的负数 * @param v1 * @return */ public static Double neg(Double v1) { /** * @Title: toFixdLengthString * @Description: 将字符串用符号填充位数 * @param str 源字符串 * @param fixdlenth 位数 * @return String * @throws */ public static String toFixdLengthString(String str, int fixdlenth) { } /** * @Title: toFixdLengthString * @Description: 将数字用“0”填充位数 * @param num * @param fixdlenth * @return String * @throws */ public static String toFixdLengthString(int num, int fixdlenth) { } /** * @Title: generateSpaceString * @Description: 得到指定位数占位符 * @param length * @return String * @throws */ public static String generateSpaceString(int length) { } /** * @Title: generateZeroString * @Description: 得到指定位数的“0”的占位符 * @param length * @return String * @throws */ public static String generateZeroString(int length) { } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值