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

package test;

public class NumberFormatTest {

static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿",
"十亿", "百亿", "千亿", "万亿" };
static char[] numArray = { ‘零‘, ‘一‘, ‘二‘, ‘三‘, ‘四‘, ‘五‘, ‘六‘, ‘七‘, ‘八‘, ‘九‘ };

/**
* @param args
*/
public static void main(String[] args) {
int num = 245000006;
String numStr = foematInteger(num);
print("num= " + num + ", convert result: " + numStr);
double decimal = 245006.234206;
print("============================================================");
String decStr = formatDecimal(decimal);
print("decimal= " + decimal + ", decStr: " + decStr);
}

private static String foematInteger(int num) {
char[] val = String.valueOf(num).toCharArray();
int len = val.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
String m = val[i] + "";
int n = Integer.valueOf(m);
boolean isZero = n == 0;
String unit = units[(len - 1) - i];
if (isZero) {
if (‘0‘ == val[i - 1]) {
// not need process if the last digital bits is 0
continue;
} else {
// no unit for 0
sb.append(numArray[n]);
}
} else {
sb.append(numArray[n]);
sb.append(unit);
}
}
return sb.toString();
}

private static String formatDecimal(double decimal) {
String decimals = String.valueOf(decimal);
int decIndex = decimals.indexOf(".");
int integ = Integer.valueOf(decimals.substring(0, decIndex));
int dec = Integer.valueOf(decimals.substring(decIndex + 1));
String result = foematInteger(integ) + "." + formatFractionalPart(dec);
return result;
}

private static String formatFractionalPart(int decimal) {
char[] val = String.valueOf(decimal).toCharArray();
int len = val.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
int n = Integer.valueOf(val[i] + "");
sb.append(numArray[n]);
}
return sb.toString();
}

private static void print(Object arg0) {
System.out.println(arg0);
}
}

时间: 2024-10-10 21:21:44

java实现 阿拉伯数字转换为汉字数字 算法的相关文章

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

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

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

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

数字转换为汉字小算法

/** * 将数字转换成对应的汉字 * * @param number * 数字 * @return 对应的汉字 */ public static String intToChinese(int number) { char[] val = String.valueOf(number).toCharArray(); int len = val.length; StringBuilder sb = new StringBuilder(); for (int i = 0; i < len; i++)

Java实现4位数吸血鬼数字算法

定义:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序,以两个0结尾的数字是不允许的.如1260 = 21 * 60,2187 = 27 * 81等. 本例中实现4位数之内的所有吸血鬼数字. 核心代码: public static void main(String[] args) { //吸血鬼数字计数器 int count = 0; //乘积数字 int m = 0; //字符组,匹配用的 char[] a

将阿拉伯数字转换为中文书面数字

前几天有人在群里写这个,好像挺纠结的样子,就顺手帮他写了一个. 主要思路是中文的数字读法是四位四位分的,高位数字的读法就是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))

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

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

键盘录入数字,输出汉字数字,如键盘录入123,输出一二三。

import java.util.Scanner; public class Test3 { /** *  从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三: * 键盘输入3103,打印出三一零三. * @param args */ public static void main(String[] args) { //键盘录入数据: Scanner sc=new Scanner(System.in); // 引导用户: System.out.println("请输

阿拉伯数字 转 汉字大写

参考 算法的乐趣 阿拉伯数字 转 汉字大写   如 123 > 壹佰贰拾叁 思路: 如:a = 123,1234,1200 按权位分为 {"","拾","佰","仟"}, 按节权位分{"","万","亿","万亿"} 1.将 a 按4位分隔,循环每个分隔,通过位移确定权位,进行转换中文. 然后确定每个分隔后的节权位. 注意对0的转换: 1.1

java单向加密算法小结(1)--Base64算法

java单向加密算法小结(1)--Base64算法 从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间是使用字节流的方式进行传递的,所有的信息都要最终转换为0101的二进制,这本身就涉及到编码,解码的应用. Base64,顾名思义,是使用了64个基本的字符来对任意数据进行编码的一种实现方式,那既然有Base64,是不是也有Base32,Base16