50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > 数字金额转大写金额 工具类

数字金额转大写金额 工具类

时间:2022-07-08 15:58:49

相关推荐

数字金额转大写金额 工具类

数字金额转大写金额 工具类

代码如下:

/** 金额转为汉字大写* @return* @throws* @author TomatoYan*/public class NumberToCN {/*汉字中数字大写*/public static final String[] CN_UPPER_NUMBER_HEAD = {"元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};public static final String[] CN_UPPER_NUMBER_COUNT = {"","元","元","元","","万元","万元","万元","","亿元","亿元","亿元"};/*汉字中小数点后的大写*/public static final String[] CN_UPPER_NUMBER_TAIL = {"分", "角"};/*汉字单位大写*/public static final String[] CN_UPPER_MONEY_UNIT = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};/*特殊字符:整*/public static final String CN_FULL = "整";/*特殊字符:零元整*/public static final String CN_ZERO_FULL = "零元" + CN_FULL;/*将输入的金额转换为对应的汉字大写*/public String changeAmtToCN(String amtStr) {String loanAmt = CN_ZERO_FULL;if (Double.parseDouble(amtStr) != 0) {String[] amtArr = amtStr.split("\\.");if (amtArr.length > 1) {String amtHead = amtArr[0];String amtTail = amtArr[1];loanAmt = Double.parseDouble(amtTail) == 0 ? (changeAmtHeadToCN(amtHead) + CN_FULL) : (changeAmtHeadToCN(amtHead) + changeAmtTailToCN(amtTail));} else {String amtHead = amtArr[0];loanAmt = changeAmtHeadToCN(amtHead) + CN_FULL;}}return loanAmt;}/*小数点前*/public String changeAmtHeadToCN(String headStr) {StringBuffer sb = new StringBuffer();Double head = Double.parseDouble(headStr);int count = 0;boolean flag = true;for (int i = 0; i < headStr.length(); i++) {int x = (int) (head % 10);if(x==0&&flag) {count++;head = head / 10;}else{flag=false;sb.append(CN_UPPER_NUMBER_HEAD[i]);sb.append(CN_UPPER_MONEY_UNIT[x]);head = head / 10;}}return count == 0?sb.reverse().toString():sb.reverse().append(CN_UPPER_NUMBER_COUNT[count]).toString();}/*小数点后*/public String changeAmtTailToCN(String tailStr) {StringBuffer sb = new StringBuffer();int tail = Integer.parseInt(tailStr);for (int i = 0; i < tailStr.length(); i++) {int x = tail % 10;sb.append(CN_UPPER_NUMBER_TAIL[i]);sb.append(CN_UPPER_MONEY_UNIT[x]);tail = tail / 10;}return sb.reverse().toString();}public static void main(String[] args) {String strArr[] = {"1","10","100","1000","10000","100000","1000000","10000000","100000000","1000000000","10000000000","100000000000"};for (String str :strArr) {System.out.println(str+","+new NumberToCN().changeAmtToCN(str));}}}

由于是用数组来控制位数的所以最大支持壹仟亿,由于int值最多为2^32所以,使用了Double来做存储。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。