首页 > 代码库 > 将阿拉伯数字转换为中文书面数字
将阿拉伯数字转换为中文书面数字
前几天有人在群里写这个,好像挺纠结的样子,就顺手帮他写了一个。
主要思路是中文的数字读法是四位四位分的,高位数字的读法就是xxxx亿xxxx万xxxx。
void Start () { //测试数据 Debug.Log (full_toword(987654321)); Debug.Log (full_toword(907654321)); Debug.Log (full_toword(9000900654321)); Debug.Log (full_toword(9000900000000)); } string full_toword(long i){ long[] a=new long[4];//按照万亿兆拆分输入数字 a [0] = i/1000000000000; a [1] = i / 100000000 % 10000; a [2] = i / 10000 % 10000; a [3] = i % 10000; string[] s = new string[4];//每4位数字对应的字符串 s [0] = thousand_toword ((int)a [0],"兆"); s [1] = thousand_toword ((int)a [1],"亿"); s [2] = thousand_toword ((int)a [2],"万"); s [3] = thousand_toword ((int)a [3],""); for (int j = 0; j < 4; j++) { if (0 == a [j]) s [j] = "";//除去高位零 else break; } for (int j = 3; j >= 0; j--) { if (0 == a [j]) s [j] = "";//除去低位零 else break; } int max;//获取数字中最大的单位 for (max = 0; max < 4; max++) { if (a [max] != 0) break; } for (int j = max + 1; j < 4; j++) { if ((0 != a [j]) && (a [j] / 1000 == 0)) s [j] = "零" + s [j];//如果该四位数字不是零,并且不是最高位,那么在前面加一个零 } string _out = s[0]+s[1]+s[2]+s[3]; return _out; } ///输出四位数字的读法 string thousand_toword(int i,string ss){ int[] a=new int[4]; a [0] = i / 1000; a [1] = i / 100 % 10; a [2] = i / 10 % 10; a [3] = i % 10; string[] s = new string[4]; s [0] = toword (a [0],"千"); s [1] = toword (a [1],"百"); s [2] = toword (a [2],"十"); s [3] = toword (a [3],""); for (int j = 0; j < 4; j++) { if (0 == a [j]) s [j] = "";//除去高位零 else break; } for (int j = 3; j >= 0; j--) { if (0 == a [j]) s [j] = "";//除去低位零 else break; } for (int j = 0; j < 3; j++) { if (("零" == s [j]) && ("零" == s [j+1])) s [j] = "";//将连续的零合并为一个,比如1001这样的数字 } string _out = s[0]+s[1]+s[2]+s[3]+ss; return _out; } //将对应的一位阿拉伯数字转换为汉字 string toword(int i,string s){ switch (i) { case 0: return("零"); case 1: return("一"+s); case 2: return("二"+s); case 3: return("三"+s); case 4: return("四"+s); case 5: return("五"+s); case 6: return("六"+s); case 7: return("七"+s); case 8: return("八"+s); case 9: return("九"+s); default: return(""); } } }
附一张输出结果,没问题
将阿拉伯数字转换为中文书面数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。