阿拉伯数字 转 汉字大写

参考 算法的乐趣

阿拉伯数字 转 汉字大写   如 123 > 壹佰贰拾叁

思路:

如:a = 123,1234,1200

按权位分为 {"","拾","佰","仟"},

按节权位分{"","万","亿","万亿"}

1.将 a 按4位分隔,循环每个分隔,通过位移确定权位,进行转换中文。

然后确定每个分隔后的节权位。

注意对0的转换:

1.10000 不取零

2.1001 取一个零

3.01不取零

如下:

 1 package algo;
 2
 3 public class NumToCh {
 4     static String  [] chnChar = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
 5     //权位
 6     static String [] chnUnit = {"","拾","佰","仟"};
 7     //节权位
 8     static String [] chnUnitSec = {"","万","亿","万亿"};
 9
10     public static void main(String[] args) {
11         String a = "11120";
12         String b = "0011120";//001,1120
13         String c = "111002";// 11,1002
14         String d = "11102";
15         System.out.println(numberTochn(a));
16         System.out.println(numberTochn(b));
17         System.out.println(numberTochn(c));
18         System.out.println(numberTochn(d));
19
20     }
21
22     private static String numberTochn(String numScan){
23         int num = Integer.parseInt(numScan);
24         StringBuffer chn = new StringBuffer();
25         int unitPos = 0;
26         boolean zero = true;
27         while(num>0){
28             int section = num%10000;
29             if(!zero){
30                 chn.insert(0, chnChar[0]);
31             }
32             //将section转中文
33             String ch = numberToChar(section);
34             //加 节权位
35             if(section!=0){
36                 ch += (chnUnitSec[unitPos]);
37             }
38             chn.insert(0, ch);
39             //千字节为0,需要在下一个 section补零
40             if(section<1000&&section>0){
41                 zero = false;
42             }
43             //节权位对应的下标
44             unitPos++;
45             //移位下一个
46             num = num/10000;
47         }
48
49         return chn.toString();
50     }
51     //将数字转换为中文
52     private static String numberToChar(int section) {
53         StringBuffer chn = new StringBuffer();
54         boolean zero = true;
55         int unitPos = 0 ;
56         while(section>0){
57             int v = section%10;
58             if(v==0){
59                 //zero控制零(必须判断有数字后,才输入零(01),并且多个连续的0只取一个(0000))
60                 if(!zero){
61                     zero = true;
62                     chn.insert(0, chnChar[v]);
63                 }
64             }else{
65                 zero = false;
66                 String s = chnChar[v] + //转字符
67                         chnUnit[unitPos];//权位
68                 chn.insert(0,s);
69             }
70             //移位下标
71             unitPos++;
72             //移位下个
73             section = section/10;
74         }
75         return chn.toString();
76
77     }
78
79
80 }
时间: 2024-10-29 19:10:59

阿拉伯数字 转 汉字大写的相关文章

金额阿拉伯数字转换为中文大写

最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖"; private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟"; 1 public static String GetCnString(String MoneyString) //传入数字 2

Excel表格中怎样快速将阿拉伯数字转化为大写文字?尝试这样操作一键完成

在职场办公中,Excel的使用频率可谓是非常高啦.为了保证工作可以按时完成都会学习一些自己需要的Excel技巧来辅助整理表格.今天小编为大家分享怎样快速将Excel表格中的阿拉伯数字转换成大写文字,一起来看看吧.阿拉伯数字转换成大写文字1.首先打开Excel表格选择单元格输入一些阿拉伯数字,若要全部转换成大写文字,就要将这些数据全选,点击鼠标右键选择单元格格式.2.在出现的单元格格式页面中,在分类栏目里面选择[特殊],之后选择中文大写数字就可以转换过来啦. 3.利用该操作还可以转换为中文小写数字

js完美转换阿拉伯数字为数字大写(原创)

啥都不说,直接上代码: //阿拉伯数字转换为简写汉字 function Arabia_To_SimplifiedChinese(Num) { for (i = Num.length - 1; i >= 0; i--) { Num = Num.replace(",", "")//替换Num中的“,” Num = Num.replace(" ", "")//替换Num中的空格 } if (isNaN(Num)) { //验证

银行货币单位阿拉伯数字转化中文大写 eclipse 下C 与java实现 MOOC

先来个简单的:MOOC上面看到的 输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出"fu"字.十个数字对应的拼音如下:  0: ling  1: yi  2: er  3: san  4: si  5: wu  6: liu  7: qi  8: ba  9: jiu 输入格式: 输入在一行中给出一个整数,如: 1234 . 提示:整数包括负数.零和正数. 输出格式: 在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格.如 yi er san

C#实现阿拉伯数字转换为汉字数字

项目中用到,保存下来为日后用到节约时间 公共方法(将单个数字转换为汉字) private char ToNum(char x) { string strChnNames = "零一二三四五六七八九"; string strNumNames = "0123456789"; return strChnNames[strNumNames.IndexOf(x)]; }    1.转换为为整数(最高位数为亿) private string ChangeInt(string x

阿拉伯数字转中文大写(整数)

<template> <div> <!--使用elementUI输入框插件--> <!--阿拉伯值输入框--> <el-input-number v-model="a" controls-position="right" :min="0"></el-input-number> <!--输入框中转中文--> <el-input v-model.trim=&qu

阿拉伯数字转汉字

1001000读作一百万一千 如果划线部分去掉则 1001000读作一百万○一千 public static string CmycurD(decimal num) { string strNum = "○一二三四五六七八九"; //0-9所对应的汉字 string strUnit = "万千百十亿千百十万千百十 "; //数字位所对应的汉字 string strGet = ""; //从原num值中取出的值 string strTurn = &

java实现 阿拉伯数字转换为汉字数字 算法

package test; public class NumberFormatTest { static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿","十亿", "百亿", "千亿",

js阿拉伯数字转中文大写

function DX(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "数据非法"; var unit = "千百拾亿千百拾万千百拾元角分", str = ""; n += "00"; var p = n.indexOf('.'); if (p >= 0) n = n.substring(0, p) + n.substr(p+1, 2); unit = unit.s