小数转换成大写中文(最终版出炉)
4.23日:最终版在17楼,欢迎大家测试使用哈!今天在做账单,要这个功能的函数。
自己写了一个,给大家分享一下。代码比较丑,有高手顺便改改么?
我这个现在支持int的2位的小数都可以。可是公司的人告诉我要改下,如果有3位小数就有问题了。我的确汗中。
一下是代码,大家有兴趣玩玩看看用用哈!
程序代码:
protected string FormatAmount(string amount) { string str = ""; char[] TOBIG = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; char[] TOUNIT = { '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟' }; if (amount[amount.Length - 3] == '.') { for (int i = 0; i < amount.Length - 3; i++) { int j = amount.Length - 4 - i; if (amount[i] == '0') { for (int k = i; k < amount.Length - 1; k++) { if (amount[i + 1] == '0' || amount[i + 1] == '.') i++; } if (i == amount.Length - 1) str += "整"; else str += TOBIG[0]; } else { str += TOBIG[int.Parse(amount[i].ToString())].ToString(); str += TOUNIT[j].ToString(); } } if (amount[amount.Length - 2] != '0') str += TOBIG[int.Parse(amount[amount.Length - 2].ToString())].ToString() + "角"; if (amount[amount.Length - 1] != '0') str += TOBIG[int.Parse(amount[amount.Length - 1].ToString())].ToString() + "分"; } else { for (int i = 0; i < amount.Length; i++) { int j = amount.Length - 1 - i; if (amount[i] == '0') { if (amount[i + 1] == '0') i++; if (i == amount.Length - 1) str += "整"; else str += TOBIG[0]; } else { str += TOBIG[int.Parse(amount[i].ToString())].ToString(); str += TOUNIT[j].ToString(); } } } return str; }
谢谢各位看了!
[[it] 本帖最后由 走刀口→超 于 2008-4-23 11:14 编辑 [/it]]