public class Test { private static String[] CH = { "", "", "拾", "佰" , "仟" , "万" , "" , "" , "" , "亿" , "", "" , "" , "兆" }; private static String[] CHS_NUMBER = { "零", "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒", "捌" , "玖" }; /** * 传入数字金额字符串,返回数字金额对应的中文大字与读法 * @param money * 金额字符串 * @return 金额中文大写 */ public static String getCHSNumber(String money){ String chs = ""; String tmp_int = money.substring(0, money.indexOf(".")); String tmp_down = money.substring(money .indexOf("." )+1); char[] tmp_int_char = tmp_int.toCharArray(); String[] tmp_chs = new String[tmp_int_char.length ]; int tab = 0; for (int i = 0; i < tmp_int_char.length; i++) { tab = tmp_int_char. length - i - 1; if (tmp_int_char.length <= 5) { tmp_chs[tab] = CHS_NUMBER[(int )Float.parseFloat (tmp_int_char[i] + ".0" )]; if (!tmp_chs[tab].equals("零" )) { // tmp_int_char.Length - i 为数字所在的位数 chs = chs + tmp_chs[tab] + CH[tmp_int_char.length - i]; } else { // 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零 if (!chs.endsWith("零" ) && tab != 0) { chs = chs + tmp_chs[tab]; } else if (chs.endsWith("零") && tab == 0) { chs = chs.substring(0, chs.length() - 1); } } } // 如果数字的位数大于5和小于9时 if (tmp_int_char.length > 5 && tmp_int_char.length < 9) { tmp_chs[tab] = CHS_NUMBER[(int )Float.parseFloat (tmp_int_char[i] + ".0" )]; // 如:123,1234分成两部分 // 第1部分123:万以上亿以下 if (tab >= 4) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 3]; // 当第1部分算完时在加上"万" if (tab == 4) { chs = chs + "万"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 4) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); chs = chs + "万"; } else { // 如果没有零就直接加上"万" chs = chs + "万"; } } } } // 如:123,1234分成两部分 // 第1部分1234:万以下 if (tab < 4) { if (!tmp_chs[tab].equals("零" )) { // tmp_int_char.Length - i 为数字所在的位数 chs = chs + tmp_chs[tab] + CH [tmp_int_char.length - i]; } else { // 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零 if (!chs.endsWith("零" ) && tab != 0) { chs = chs + tmp_chs[tab]; } if (chs.endsWith("零" ) && tab == 0) { chs = chs.substring(0, chs.length() - 1); } } } } // 如果数字的位数大于5和小于9时 if (tmp_int_char.length >= 9 && tmp_int_char.length <= 12) { tmp_chs[tab] = CHS_NUMBER[(int )Float.parseFloat (tmp_int_char[i] + ".0" )]; if (tab >= 8 && tab < 12) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 7]; // 当第1部分算完时在加上"万" if (tab == 8) { chs = chs + "亿"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 8) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); chs = chs + "亿"; } else { // 如果没有零就直接加上"万" chs = chs + "亿"; } } } } // 如:123,1234分成两部分 // 第1部分123:万以上亿以下 if (tab >= 4 && tab < 8) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 3]; // 当第1部分算完时在加上"万" if (tab == 4) { chs = chs + "万"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 4) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); if (!chs.endsWith("亿" )) chs = chs + "万"; } else { // 如果没有零就直接加上"万" if (!chs.endsWith("亿" )) chs = chs + "万"; } } } } // 如:123,1234分成两部分 // 第1部分1234:万以下 if (tab < 4) { if (!tmp_chs[tab].equals("零" )) { // tmp_int_char.Length - i 为数字所在的位数 chs = chs + tmp_chs[tab] + CH [tmp_int_char.length - i]; } else { // 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零 if (!chs.endsWith("零" ) && tab != 0) { chs = chs + tmp_chs[tab]; } if (chs.endsWith("零" ) && tab == 0) { chs = chs.substring(0, chs.length() - 1); } } } } // 如果数字的位数大于12和小于16时 if (tmp_int_char.length > 12 && tmp_int_char.length <= 16) { tmp_chs[tab] = CHS_NUMBER[(int )Float.parseFloat (tmp_int_char[i] + ".0" )]; if (tab >= 12 && tab < 16) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 11]; // 当第1部分算完时在加上"万" if (tab == 12) { chs = chs + "兆"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 12) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); chs = chs + "兆"; } else { // 如果没有零就直接加上"万" chs = chs + "兆"; } } } } if (tab >= 8 && tab < 12) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 7]; // 当第1部分算完时在加上"万" if (tab == 8) { chs = chs + "亿"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 8) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); if (!chs.endsWith("兆" )) chs = chs + "亿"; } else { // 如果没有零就直接加上"万" if (!chs.endsWith("兆" )) chs = chs + "亿"; } } } } // 如:123,1234分成两部分 // 第1部分123:万以上亿以下 if (tab >= 4 && tab < 8) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 3]; // 当第1部分算完时在加上"万" if (tab == 4) { chs = chs + "万"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 4) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); if (!chs.endsWith("亿" )) if (!chs.endsWith("兆" )) if (!chs.endsWith("兆" )) chs = chs + "万" ; } else { // 如果没有零就直接加上"万" if (!chs.endsWith("亿" )) if (!chs.endsWith("兆" )) chs = chs + "万" ; } } } } // 如:123,1234分成两部分 // 第1部分1234:万以下 if (tab < 4) { if (!tmp_chs[tab].equals("零" )) { // tmp_int_char.length() - i 为数字所在的位数 chs = chs + tmp_chs[tab] + CH [tmp_int_char.length - i]; } else { // 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零 if (!chs.endsWith("零" ) && tab != 0) { chs = chs + tmp_chs[tab]; } if (chs.endsWith("零" ) && tab == 0) { chs = chs.substring(0, chs.length() - 1); } } } } // 如果数字的位数大于16 if (tmp_int_char.length > 16) { tmp_chs[tab] = CHS_NUMBER[(int )Float.parseFloat (tmp_int_char[i] + ".0" )]; if (tab >= 12) { chs = chs + tmp_chs[tab]; // 当第1部分算完时在加上"万" if (tab == 12) { chs = chs + "兆"; } } if (tab >= 8 && tab < 12) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 7]; // 当第1部分算完时在加上"万" if (tab == 8) { chs = chs + "亿"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 8) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); if (!chs.endsWith("兆" )) chs = chs + "亿"; } else { // 如果没有零就直接加上"万" if (!chs.endsWith("兆" )) chs = chs + "亿"; } } } } // 如:123,1234分成两部分 // 第1部分123:万以上亿以下 if (tab >= 4 && tab < 8) { // 当前数字不是大小零时 if (!tmp_chs[tab].equals("零" )) { chs = chs + tmp_chs[tab] + CH [tab - 3]; // 当第1部分算完时在加上"万" if (tab == 4) { chs = chs + "万"; } } else { // 当前数字为大小"零"时 // 判断前一次形成在字符串结尾有没有零 // 如果没有零就加上零 if (!chs.endsWith("零" )) { chs = chs + tmp_chs[tab]; } // 当第1部分算完时 if (tab == 4) { // 先判断字符串有没有零 // 如果有零时就把零去掉再加上"万" if (chs.endsWith("零" )) { chs = chs.substring(0, chs.length() - 1); if (!chs.endsWith("兆" )) if (!chs.endsWith("亿" )) chs = chs + "万" ; } else { // 如果没有零就直接加上"万" if (!chs.endsWith("兆" )) if (!chs.endsWith("亿" )) chs = chs + "万" ; } } } } // 如:123,1234分成两部分 // 第1部分1234:万以下 if (tab < 4) { if (!tmp_chs[tab].equals("零" )) { // tmp_int_char.length() - i 为数字所在的位数 chs = chs + tmp_chs[tab] + CH [tmp_int_char.length - i]; } else { // 当数字中有零时就在后加上零,如果超过1个以上的零也只加一个零 if (!chs.endsWith("零" ) && tab != 0) { chs = chs + tmp_chs[tab]; } if (chs.endsWith("零" ) && tab == 0) { chs = chs.substring(0, chs.length() - 1); } } } } } if (tmp_down != null) { char[] tmp = tmp_down.toCharArray(); if (tmp.length == 1) { if (tmp[0] != '0' ) chs = chs + "元" + CHS_NUMBER[(int )Float.parseFloat (tmp[0] + ".0")] + "角整" ; else chs = chs + "元整"; } else { if (tmp[1] != '0' && tmp[0] != '0') { chs = chs + "元" + CHS_NUMBER[(int )Float.parseFloat (tmp[0] + ".0")] + "角" + CHS_NUMBER[(int )Float.parseFloat (tmp[1] + ".0")] + "分" ; } else if (tmp[1] != '0' && tmp[0] == '0') { chs = chs + "元零" + CHS_NUMBER[(int )Float.parseFloat (tmp[1] + ".0")] + "分" ; } } } else { chs = chs + "元整"; } return chs; } public static void main(String[] args) { /** * 出入的数字必须带有小数点,不然会出现异常 精确到分 */ String str= "1234.0111"; String result= getCHSNumber(str); System. out.println(result); } }
相关推荐
将数字金额转换为中文大写金额将数字金额转换为中文大写金额将数字金额转换为中文大写金额
1、该dll能将阿拉伯数字转换为汉字数字或者中文大写金额。例如1234567.07可转换为: “一百二十三万四千五百六十七点零七”或“壹佰贰拾叁万肆仟伍佰陆拾柒圆零柒分”。 目前支持正负千亿以内(整数部分不超过12位)...
实例006——实现数字金额的中文大写转换 实例006——实现数字金额的中文大写转换 实例006——实现数字金额的中文大写转换
金额转换,中文金额转数字金额,数字金额转中文金额,中文金额转数字金额从字符串中获取中文大写金额或是数字金额,不支持小数,中文金额不支持混写,如 五千零壹十万元,不支持转换会输出0,字符串可以不用截取,...
数字金额转换为中文汉字金额:例如select num_to_zhs(123456789.54321) from dual; 我们调用该function可以将金额"123456789.54321"转换为“壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元伍角肆分叁贰壹”。
金额汉字数字转换工具金额汉字数字转换工具金额汉字数字转换工具金额汉字数字转换工具
C语言成序设计__实现人民币小写金额与大写金额的转换
将数字金额转化为汉字大写金额,用于理财程序的金额转化。
用java实现将阿拉伯数字转换为金额的汉字大写
将金额数字转化为大写,格式规范标准。① 当没有零头时自动加xxxx元整 ② 小数能够精确到角、分、厘 ③ 能够处理1亿一下金额数字 ④ 使用方法:numToBig(金额),返回大写字符串
功能说明 php将数字金额转换成汉字金额大写
修改了输入小数转换一个错误,修正窗体可调整和图标等
JS将数字转换为大写汉字人民币
将阿拉伯数字金额转成中文大写 "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"......
数字金额转换成中文金额的js,希望给大家带来帮助
本文实例为大家分享了python实现...# 对拆分后的数字先按照section进行数字到汉字的转换,然后添加数值单位,如:仟,佰,拾,处理结束后可以得到转换后的序列。 # 对section处理结束后,再对每个section进行单位的追
Ireport实现金额大写 在irport里面写script脚本 完成转换
金额转换,将数字转换成汉字(例如1001.11,转成壹仟零壹元壹角壹分)
读入一个浮点数值,转换为金额大写。整数只显示整数部分。含连续0只输出一个“零”。整圆显示“整”。
该资源是asp.net+c#页面程序,采用四种方法将数字形式的金额转换为中英文金额写法。