数字转中文大写金额
程序员文章站
2022-06-19 16:44:57
不知道大家有没有遇到需要将数字转成中文大写的需要,如下图 这是转换的代码,有需要的的Ctr+C吧,不谢。 ......
不知道大家有没有遇到需要将数字转成中文大写的需要,如下图
这是转换的代码,有需要的的ctr+c吧,不谢。
public class publicconvert { private static string[] ls_shz = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" }; private static string[] ls_dw_zh = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; private static string[] num_dw = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; private static string[] ls_dw_x = { "角", "分" }; /// <summary> /// 金额小写转中文大写。 /// 整数支持到万亿;小数部分支持到分(超过两位将进行banker舍入法处理) /// </summary> /// <param name="num">需要转换的双精度浮点数</param> /// <returns>转换后的字符串</returns> public static string numgetstr(double num) { boolean ixsh_bool = false;//是否含有小数,默认没有(0则视为没有) boolean izhsh_bool = true;//是否含有整数,默认有(0则视为没有) string numstr;//整个数字字符串 string numstr_zh;//整数部分 string numsr_x = "";//小数部分 string numstr_dq;//当前的数字字符 string numstr_r = "";//返回的字符串 num = math.round(num, 2);//四舍五入取两位 //各种非正常情况处理 if (num < 0) return "不转换欠条"; if (num > 9999999999999.99) return "很难想象谁会有这么多钱!"; if (num == 0) return ls_shz[0]; //判断是否有整数 if (num < 1.00) izhsh_bool = false; numstr = num.tostring(); numstr_zh = numstr;//默认只有整数部分 if (numstr_zh.contains(".")) {//分开整数与小数处理 numstr_zh = numstr.substring(0, numstr.indexof(".")); numsr_x = numstr.substring((numstr.indexof(".") + 1), (numstr.length - numstr.indexof(".") - 1)); ixsh_bool = true; } if (numsr_x == "" || int.parse(numsr_x) <= 0) {//判断是否含有小数部分 ixsh_bool = false; } if (izhsh_bool) {//整数部分处理 numstr_zh = reversion_str(numstr_zh);//反转字符串 for (int a = 0; a < numstr_zh.length; a++) {//整数部分转换 numstr_dq = numstr_zh.substring(a, 1); if (int.parse(numstr_dq) != 0) numstr_r = ls_shz[int.parse(numstr_dq)] + ls_dw_zh[a] + numstr_r; else if (a == 0 || a == 4 || a == 8) { if (numstr_zh.length > 8 && a == 4) continue; numstr_r = ls_dw_zh[a] + numstr_r; } else if (int.parse(numstr_zh.substring(a - 1, 1)) != 0) numstr_r = ls_shz[int.parse(numstr_dq)] + numstr_r; } if (!ixsh_bool) return numstr_r + "整"; //numstr_r += "零"; } for (int b = 0; b < numsr_x.length; b++) {//小数部分转换 numstr_dq = numsr_x.substring(b, 1); if (int.parse(numstr_dq) != 0) numstr_r += ls_shz[int.parse(numstr_dq)] + ls_dw_x[b]; else if (b != 1 && izhsh_bool) numstr_r += ls_shz[int.parse(numstr_dq)]; } return numstr_r; } public static string reversion_str(string input) { char[] array = input.tochararray(); ienumerable<char> cs = array.reverse<char>(); char[] array1 = cs.toarray<char>(); string result = new string(array1); } }