人民币数字金额转大写金额

public class t {
	public static String Trans2RMB(String money) {
		int index = money.indexOf(".");
		if (index < 0) {// 没有角分
			money = money + ".00";
			index = money.indexOf(".");
		}
		if (money.substring(index, money.length()).length() < 3) {// 没有分
			money = money + "0";
			index = money.indexOf(".");
		}
		money = money.replaceAll("\\D", "");// 去除"."
		int length = money.length();
		// 货币大写形式
		String bigLetter[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
		// 货币单位
		String unit[] = { "仟", "佰", "拾", "万", "仟", "佰", "拾", "亿", "仟", "佰",
				"拾", "万", "仟", "佰", "拾", "元", "角", "分" };
		StringBuffer buf = new StringBuffer("");
		for (int i = 0; i < length; i++) {
			int num = Integer.parseInt(String.valueOf(money.charAt(i)));
			buf.append(bigLetter[num]);
			buf.append(unit[unit.length - money.length() + i]);
		}
		String moneyTmp = buf.toString();
		buf = null;
		for (int i = 0; i < 4; i++) {
			// 亿 万 元是四个为单元的最后一位比如1234(亿)4567(万)7891(元)
			moneyTmp = moneyTmp.replaceAll("零亿", "亿");
			moneyTmp = moneyTmp.replaceAll("零万", "万");
			moneyTmp = moneyTmp.replaceAll("零仟", "零");
			moneyTmp = moneyTmp.replaceAll("零佰", "零");
			moneyTmp = moneyTmp.replaceAll("零拾", "零");
			moneyTmp = moneyTmp.replaceAll("零元", "元");
			moneyTmp = moneyTmp.replaceAll("零角", "零");
			moneyTmp = moneyTmp.replaceAll("零分", "整");
		}
		moneyTmp = moneyTmp.replaceAll("亿万", "亿");
		moneyTmp = moneyTmp.replaceAll("拾元", "拾元零");
		moneyTmp = moneyTmp.replaceAll("[零]{1,}", "零");// 多个连续的零替换为一个零
		moneyTmp = moneyTmp.replaceAll("零整", "整");
		return moneyTmp;
	}

	public static void main(String[] args) {
		String money;
		money = "230067890080.01";
		System.out.println(Trans2RMB(money));
		money = "230067890080.11";
		System.out.println(Trans2RMB(money));
		money = "230067890080.10";
		System.out.println(Trans2RMB(money));

		money = "230067890081.01";
		System.out.println(Trans2RMB(money));
		money = "230067890081.11";
		System.out.println(Trans2RMB(money));
		money = "230067890081.10";
		System.out.println(Trans2RMB(money));

		money = "230067890080.01";
		System.out.println(Trans2RMB(money));
		money = "230667890080.01";
		System.out.println(Trans2RMB(money));

		money = "230007890080.01";
		System.out.println(Trans2RMB(money));
		money = "230607890080.01";
		System.out.println(Trans2RMB(money));

		money = "200067890080.01";
		System.out.println(Trans2RMB(money));
		money = "200067890080.11";
		System.out.println(Trans2RMB(money));
		money = "200067890080.10";
		System.out.println(Trans2RMB(money));

		money = "200007890080.01";
		System.out.println(Trans2RMB(money));
		money = "200000890080.11";
		System.out.println(Trans2RMB(money));
		money = "200000090080.10";
		System.out.println(Trans2RMB(money));
		money = "200000000080.10";
		System.out.println(Trans2RMB(money));

		money = "200007890080";
		System.out.println(Trans2RMB(money));
		money = "200000890080.1";
		System.out.println(Trans2RMB(money));

		money = "200607890080.01";
		System.out.println(Trans2RMB(money));
		money = "200600890080.11";
		System.out.println(Trans2RMB(money));
		money = "200600090080.10";
		System.out.println(Trans2RMB(money));
		money = "200600000080.10";
		System.out.println(Trans2RMB(money));

		money = "20007800080.01";
		System.out.println(Trans2RMB(money));
		money = "10001.01";
		System.out.println(Trans2RMB(money));

		// System.out.println(new
		// StringBuffer(Arrays.toString(unit)).reverse());
		// String small[] = { "分", "角" };
		// String[] ss = new String[] { "", "元" };
		// System.out.println(MoneyUtil.Trans2RMB("."));
		// System.out.println(MoneyUtil.Trans2RMB(".0"));
		// System.out.println(MoneyUtil.Trans2RMB("0.0"));
		// System.out.println(MoneyUtil.Trans2RMB("0.00"));
		// System.out.println(MoneyUtil.Trans2RMB("0.000"));
		// System.out.println(MoneyUtil.Trans2RMB("123456789.0"));
		// System.out.println(MoneyUtil.Trans2RMB("1234"));
		// System.out.println(MoneyUtil.Trans2RMB("1111."));
		// System.out.println(MoneyUtil.Trans2RMB("1011.011"));
		// System.out.println(MoneyUtil.Trans2RMB("00012340000000000.011"));
		//
		// 贰仟叁佰亿陆仟柒佰捌拾玖万零捌拾元零壹分
		// 贰仟叁佰亿陆仟柒佰捌拾玖万零捌拾元零壹角壹分
		// 贰仟叁佰亿陆仟柒佰捌拾玖万零捌拾元零壹角整
		// 贰仟叁佰亿陆仟柒佰捌拾玖万零捌拾壹元零壹分
		// 贰仟叁佰亿陆仟柒佰捌拾玖万零捌拾壹元壹角壹分
		// 贰仟叁佰亿陆仟柒佰捌拾玖万零捌拾壹元壹角整
		// 贰仟叁佰亿陆仟柒佰捌拾玖万零捌拾元零壹分
		// 贰仟叁佰零陆亿陆仟柒佰捌拾玖万零捌拾元零壹分
		// 贰仟叁佰亿零柒佰捌拾玖万零捌拾元零壹分
		// 贰仟叁佰零陆亿零柒佰捌拾玖万零捌拾元零壹分
		// 贰仟亿陆仟柒佰捌拾玖万零捌拾元零壹分
		// 贰仟亿陆仟柒佰捌拾玖万零捌拾元零壹角壹分
		// 贰仟亿陆仟柒佰捌拾玖万零捌拾元零壹角整
		// 贰仟亿零柒佰捌拾玖万零捌拾元零壹分
		// 贰仟亿零捌拾玖万零捌拾元零壹角壹分
		// 贰仟亿零玖万零捌拾元零壹角整
		// 贰仟亿零捌拾元零壹角整
		// 贰仟亿零柒佰捌拾玖万零捌拾元整
		// 贰仟亿零捌拾玖万零捌拾元零壹角整
		// 贰仟零陆亿零柒佰捌拾玖万零捌拾元零壹分
		// 贰仟零陆亿零捌拾玖万零捌拾元零壹角壹分
		// 贰仟零陆亿零玖万零捌拾元零壹角整
		// 贰仟零陆亿零捌拾元零壹角整
		// 贰佰亿零柒佰捌拾万零捌拾元零壹分
	}

}
时间: 2024-08-02 06:47:56

人民币数字金额转大写金额的相关文章

人民币 小写金额转换为大写金额

### 人民币 小写金额转换为大写金额 标签(空格分隔): 人民币 小写金额转换为大写金额 --- jsp:```div class="form-group"><label class="col-sm-4 control-label">合计人民币金额(小写):</label><div class="col-sm-7"><input id="totalRmbLower" type=

人民币小写金额转大写金额

#region 人民币小写金额转大写金额 /// <summary> /// 小写金额转大写金额 /// </summary> /// <param name="Money">接收需要转换的小写金额</param> /// <returns>返回大写金额</returns> public static string ConvertMoney(this decimal Money) { //金额转换程序 string

PHP数字金额转换大写金额

早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下.金额转换的函数方法有很多,都很不错.不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义.如有问题请朋友们指出,小崔及时修正.谢谢啦! 废话不多说直接上代码: 1 <?php 2 3 /** 4 * 数字金额转换大写数字 5 * $num 数字类型 6 */ 7 8 function inttodaxie($num) { 9 //判断$num是否数字 10 if(!is_numeric($num)) return -

numberToCapital() JavaScript数字金额转换为大写金额

function numberToCapital(number) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(number)) { return "数字格式不正确!" } // 如果有小数,截取整数位和小数位 number += '00'; var pointIndex = number.indexOf('.'); if (pointIndex > -1) { number = number.substring(0, pointIndex) + nu

JS数字金额转为大写金额

/** 数字金额大写转换(可以处理整数,小数,负数) */function smalltoBIG(n){var fraction = ['角', '分'];var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ];var head = n < 0? '欠': '';n = Math.abs(n); var s = ''; fo

PHP算法--将数字金额转换成大写金额

最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; function RMB_Upper($num) { $num = round($num,2); //取两位小数 $num = ''.$num; //转换成数字 $arr = explode('.',$num); $str_left = $arr[0]; // 12345 $str_right = $arr[1]

转一个财务方面常用到的数字金额转成汉字大写金额 php类

系统里有牵扯到财务.合同等方面的处理时,常常需要把数字金额转成汉字大写金额(貌似这样正规),转一个转换的php class吧!<?php// 诸海加(ALPHA .z)// 2000-7-19 class ChineseNumber{//var $basical=array(0=>"零","一","二","三","四","五","六","七&qu

PHP 数字金额转换成中文大写金额的函数 数字转中文

/** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; //精确到分后面就不要了,所以只留两个小数位 $num = round($num, 2); //将数字转化为整数 $num = $num * 100; if (strlen($

转换人民币大小金额

C#控制台测试 class Program { static void Main(string[] args) { decimal rmb = Convert.ToDecimal(Console.ReadLine()); Rmb.CmycurD(rmb); Console.ReadLine(); } } /// <summary> /// Rmb 的摘要说明. /// </summary> public static class Rmb { /// <summary>