阿拉伯数字转中文数字

package algorithm.other;

/**
* 阿拉伯数字转中文数字
* @author NINGUANG
*
*/
public class ChineseNum
{
private static String[] chnNumChar =
{ "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };

private static String[] chnUnitSection =
{ "", "万", "亿", "万" };

private static String[] chnUnitChar =
{ "", "十", "百", "千" };

public static void main(String[] args)
{
System.out.println(numToChn(0));
System.out.println(numToChn(1000021000));
System.out.println(numToChn(10));
System.out.println(numToChn(11));
System.out.println(numToChn(100));
System.out.println(numToChn(101));
System.out.println(numToChn(203));
System.out.println(numToChn(1001));
System.out.println(numToChn(1210121003));
for (int i = 0; i < 10; i++)
{
long a = (long) Math.floor(Math.random() * 999900000000l);
System.out.println(a + "~~~~~~~" + numToChn(a));
}
}

/**
* 阿拉伯数字转中文数字
* @param num 一万亿以内正整数
* @return
*/
public static String numToChn(long num)
{
String chnStr = "";
String strIns = "";
int unitPos = 0;
boolean zero = false;
while (num > 0)
{
int section = (int) (num % 10000);
if (zero)
{
chnStr = chnNumChar[0] + chnStr;
}
strIns = SectionToChn(section);

strIns += (section != 0) ? chnUnitSection[unitPos] : chnUnitSection[0];
chnStr = strIns + chnStr;
zero = (section < 1000) && (section > 0);
num = num / 10000;
unitPos++;
}

if (chnStr.length() == 0)
{
return chnNumChar[0];
}

return chnStr;
}

private static String SectionToChn(int section)
{
String x = "";
String strIns;
int unitPos = 0;//位数
boolean zero = true;
while (section > 0)
{
int v = section % 10;
if (v == 0)
{
if ((section == 0) || !zero)
{
zero = true;
x = chnNumChar[v] + x;//补零
}
} else
{
zero = false;
strIns = chnNumChar[v];
strIns += chnUnitChar[unitPos];
//去一
if (section < 10 && strIns.equals(chnNumChar[1] + chnUnitChar[1]))
{
strIns = strIns.substring(1);
}
x = strIns + x;
}
unitPos++;
section = section / 10;
}
return x;
}
}

时间: 2024-08-06 05:51:26

阿拉伯数字转中文数字的相关文章

阿拉伯数字与中文数字的转换----------相互转化

今天继续看<算法的乐趣>,学习了阿拉伯数字与中文数字的转化. 汉字用零一二三四五六七八九作为基本计数,与阿拉伯数字靠数字偏移位置的权位不一样.中文数字是才有"数字+权位"的方式组成数字,比方百,千,万. 中文数字每一个数字后都会跟上一个权位.权位就是数字的量值,相当于阿拉伯数字的数位. 中文计数以万为小节,万下面没有节权,万之上是亿为节权. 中文另一个特点是多变的"零",大概总结为三个规则: 1.以10000为小节.小节的结尾即使是0,也不使用"

【iOS开发系列】将阿拉伯数字转换为中文数字

/** * 将阿拉伯数字转换为中文数字 */ +(NSString *)translationArabicNum:(NSInteger)arabicNum { NSString *arabicNumStr = [NSString stringWithFormat:@"%ld",(long)arabicNum]; NSArray *arabicNumeralsArray = @[@"1",@"2",@"3",@"4&q

js阿拉伯数字转中文数字

//阿拉伯数字转中文数字 function NoToChinese(num) { if (!/^\d*(\.\d*)?$/.test(num)) { alert("Number is wrong!"); return "Number is wrong!"; } var AA = new Array("零", "一", "二", "三", "四", "五&qu

中文数字转阿拉伯数字

package com.test.utils.utils; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ChineseNumber2ALB { public static void main(String[] args) { St

中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八--&gt;12345678)

昨天老大问我又没有写过中文数字转换成阿拉伯数字,我说没有,我说那应该简单啊,就是将中文对应的数字换成阿拉伯数字就好了啊,比如一就换成1,二就换成2…十换成10.可是那么问题来了…… 一十二呢…不能是1102吧…这不就坑爹了吗?一百万呢………所有我苦苦思索,花费了我差不多半天的时间,终于写出了下面的程序. 1 public static void main(String[] args){ 2 3 Map<Character, String> numberMap = new HashMap<

简单中文数字转阿拉伯数字

#coding:cp936 __author__ = 'JYC103' num_dic={'一':1,'二':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9,'零':0} put_num=raw_input('输入中文数字:') #print put_num for key in num_dic:     #print key,num_dic[key]     if put_num == key:         print put_num,'对应的阿拉伯

javascript 中文数字阿拉伯数字转换类 Nzh

之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少合我口味,最后还是自已写了一个. 现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字) 现在发布出来,希望能合大家的口味. demo: http://cnwhy.github.io/nzh/demo/index.html 项目地址: https://github.com/cnwhy/nzh 欢迎push Nzh Nzh适用于开发过程中需要将数字转换为中文的场景 以字符串的方式转换,解决超大数及浮点数等问题,请自行对原

.Net C# 阿拉伯数字转为中文金额数字

一个练习,将阿拉伯数字转为中文金额数字 代码: public string ReturnStr(string inputNum) { string[] intArr = { "0" ,"1", "2", "3", "4", "5", "6", "7", "8", "9", }; string[] strArr

阿拉伯数字转中文(汉字)数字

/** * 数字工具类型 * @author rubekid * */ public class NumberUtils { private final static String[] GROUP_UNITS = {"", "万", "亿", "兆"}; private final static String[] BASE_UNITS = { "", "十", "百"