数字转换为汉语中人民币的大写

来源:互联网 发布:excel数据拆分多列 编辑:程序博客网 时间:2024/06/15 01:19

Java中吧数字转换为人民币大写格式,网上有很多方法,现在这是跟据被人的方法改编的,更容易理解一些

 

package com.lm.util;public class Test {/** * 汉语中数字大写 */private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆","伍", "陆", "柒", "捌", "玖" };/** * 汉语中货币单位大写,这样的设计类似于占位符 */private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元","拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾","佰", "仟" };/** * 特殊字符:整 */private static final String CN_FULL = "整";/** * 把输入的金额转换为汉语中人民币的大写 *  * @param numberOfMoney *            输入的金额 * @return 对应的汉语大写 */public static String number2CNMontrayUnit(String str) {String headInteger = null;//整数部分String endDecimal = null;//小数部分if(str.contains(".")){headInteger = str.substring(0, str.indexOf("."));endDecimal = str.substring(str.indexOf(".") + 1);}else{headInteger = str;}long headIntegerValue = (long) (Double.parseDouble(headInteger.trim()));int numUnit = 0;boolean getZero = false;//判断是否为零String prefix = ""; // 整数部分转化的结果String suffix = ""; // 小数部分转化的结果// 处理小数点后面的数if (null == endDecimal || endDecimal.equals("00") ) {suffix = CN_FULL;} else {//角位是零的if(endDecimal.charAt(0) == '0'){suffix =  CN_UPPER_NUMBER[endDecimal.charAt(1) - '0'] + CN_UPPER_MONETRAY_UNIT[0] + suffix ;}else if(endDecimal.charAt(1) == '0'){suffix = suffix + CN_UPPER_NUMBER[endDecimal.charAt(0) - '0'] + CN_UPPER_MONETRAY_UNIT[1];}else{suffix = CN_UPPER_NUMBER[endDecimal.charAt(1) - '0'] + CN_UPPER_MONETRAY_UNIT[1]+  CN_UPPER_NUMBER[endDecimal.charAt(0) - '0'] + CN_UPPER_MONETRAY_UNIT[0]; }}//循环处理整数部分for (int i = 0; i < headInteger.length(); i++) {numUnit = (int) (headIntegerValue % (10));if(numUnit > 0){prefix = CN_UPPER_NUMBER[numUnit] + CN_UPPER_MONETRAY_UNIT[i+2] + prefix ;getZero = false;}else{if (!(getZero)) {prefix =   CN_UPPER_MONETRAY_UNIT[i+2] + CN_UPPER_NUMBER[0] + prefix;}getZero = true;}headIntegerValue = headIntegerValue/10;//每次循环去掉最后一位}return prefix + suffix;}public static void main(String[] args) {//String str = "100091654658.99";String str = "10";System.out.println(str);String number2cnMontrayUnit = Test.number2CNMontrayUnit(str);System.out.println(number2cnMontrayUnit);}}

0 0
原创粉丝点击