java开发_数字转换汉语中人民币的大写_完整版

做这个应用,网站空间,源于突然的一个想法:看到发票上面的数字要转换成汉语中人民币的大写

于是就有了下面的这些事儿…..

先看看运行效果:

======================================================

代码部分

======================================================

1 package com.b510.number2char; java.math.BigDecimal; * 数字转换为汉语中人民币的大写<br> 7 * hongten 9 * @contact hongtenzone@foxmail.com 10 * @create 2013-08-13 NumberToCN {* 汉语中数字大写String[] CN_UPPER_NUMBER = { “零”, “壹”, “贰”, “叁”, “肆”, 17″伍”, “陆”, “柒”, “捌”, “玖” };* 汉语中货币单位大写,香港服务器,这样的设计类似于占位符String[] CN_UPPER_MONETRAY_UNIT = { “分”, “角”, “元”, 22″拾”, “佰”, “仟”, “万”, “拾”, “佰”, “仟”, “亿”, “拾”, “佰”, “仟”, “兆”, “拾”, 23″佰”, “仟” };* 特殊字符:整String CN_FULL = “整”;* 特殊字符:负String CN_NEGATIVE = “负”;* 金额的精度,默认值为2MONEY_PRECISION = 2;* 特殊字符:零元整String CN_ZEOR_FULL = “零元” + CN_FULL;* 把输入的金额转换为汉语中人民币的大写 43 * numberOfMoney 45 *输入的金额 对应的汉语大写 String number2CNMontrayUnit(BigDecimal numberOfMoney) { 49StringBuffer sb = new StringBuffer(); 50// -1, 0, or 1 as the value of this BigDecimal is negative, zero, orsignum = numberOfMoney.signum();(signum == 0) { 55return CN_ZEOR_FULL; 56 }number = numberOfMoney.movePointRight(MONEY_PRECISION) 59.setScale(0, 4).abs().longValue();scale = number % 100; 62int numUnit = 0; 63int numIndex = 0; 64boolean getZero = false;(!(scale > 0)) { 67numIndex = 2; 68number = number / 100; 69getZero = true; 70 } 71if ((scale > 0) && (!(scale % 10 > 0))) { 72numIndex = 1; 73number = number / 10; 74getZero = true; 75 } 76int zeroSize = 0; 77while (true) { 78if (number <= 0) { 79break; 80 }numUnit = (int) (number % 10); 83if (numUnit > 0) { 84if ((numIndex == 9) && (zeroSize >= 3)) { 85sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]); 86 } 87if ((numIndex == 13) && (zeroSize >= 3)) { 88sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]); 89 } 90sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]); 91sb.insert(0, CN_UPPER_NUMBER[numUnit]); 92getZero = false; 93zeroSize = 0; 94} else { 95++zeroSize; 96if (!(getZero)) { 97sb.insert(0, CN_UPPER_NUMBER[numUnit]); 98 } 99if (numIndex == 2) {100if (number > 0) {101sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);102 }103} else if (((numIndex – 2) % 4 == 0) && (number % 1000 > 0)) {104sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);105 }106getZero = true;107 }number = number / 10;110++numIndex;111 }(signum == -1) {114sb.insert(0, CN_NEGATIVE);115 }(!(scale > 0)) {118 sb.append(CN_FULL);119 }120return sb.toString();121 } main(String[] args) {124double money = 2020004.01;125BigDecimal numberOfMoney = new BigDecimal(money);126String s = NumberToCN.number2CNMontrayUnit(numberOfMoney);127System.out.println(“你输入的金额为:【”+ money +”】 #–# [” +s.toString()+”]”);128 }129 },美国空间诚实是人生绝妙的法宝。虽然对人诚实,

java开发_数字转换汉语中人民币的大写_完整版

相关文章:

你感兴趣的文章:

标签云: