您的位置:首页 > 编程语言 > Java开发

JAVA 数字转换为中文大写的转换

2013-08-09 00:07 218 查看

【转】

读入一个浮点数值,将其转化为中文金额的大写形式。
如123.45,转化为:壹佰贰拾叁元肆角伍分。 以下是各种情况要完善:
1. 当金额为整数,只表示整数部分,省略小数部分,并添加“整”字。如123表示为:壹佰贰拾叁元整。
2.当金额中含有连续的0时,只需写一个“零”即可。如10005表示为:壹万零伍元整。
3.10的表示形式。如110表示为:壹佰贰拾元整。而10则表示为:拾元整。
package com.heyang;/*** 将10亿以内的阿拉伯数字转成汉字大写形式* @author xizhenyin**/public class CnUpperCaser {// 整数部分private String integerPart;// 小数部分private String floatPart;// 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态private static final char[] cnNumbers={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};// 供分级转化的数组,因为各个实例都要使用所以设为静态private static final char[] series={'元','拾','百','仟','万','拾','百','仟','亿'};/*** 构造函数,通过它将阿拉伯数字形式的字符串传入* @param original*/public CnUpperCaser(String original){// 成员变量初始化integerPart="";floatPart="";if(original.contains(".")){// 如果包含小数点int dotIndex=original.indexOf(".");integerPart=original.substring(0,dotIndex);floatPart=original.substring(dotIndex+1);}else{// 不包含小数点integerPart=original;}}/*** 取得大写形式的字符串* @return*/public String getCnString(){// 因为是累加所以用StringBufferStringBuffer sb=new StringBuffer();// 整数部分处理for(int i=0;i<integerPart.length();i++){int number=getNumber(integerPart.charAt(i));sb.append(cnNumbers[number]);sb.append(series[integerPart.length()-1-i]);}// 小数部分处理if(floatPart.length()>0){sb.append("点");for(int i=0;i<floatPart.length();i++){int number=getNumber(floatPart.charAt(i));sb.append(cnNumbers[number]);}}// 返回拼接好的字符串return sb.toString();}/*** 将字符形式的数字转化为整形数字* 因为所有实例都要用到所以用静态修饰* @param c* @return*/private static int getNumber(char c){String str=String.valueOf(c);return Integer.parseInt(str);}/*** @param args*/public static void main(String[] args) {System.out.println(new CnUpperCaser("123456789.12345").getCnString());System.out.println(new CnUpperCaser("123456789").getCnString());System.out.println(new CnUpperCaser(".123456789").getCnString());System.out.println(new CnUpperCaser("0.1234").getCnString());System.out.println(new CnUpperCaser("1").getCnString());System.out.println(new CnUpperCaser("12").getCnString());System.out.println(new CnUpperCaser("123").getCnString());System.out.println(new CnUpperCaser("1234").getCnString());System.out.println(new CnUpperCaser("12345").getCnString());System.out.println(new CnUpperCaser("123456").getCnString());System.out.println(new CnUpperCaser("1234567").getCnString());System.out.println(new CnUpperCaser("12345678").getCnString());System.out.println(new CnUpperCaser("123456789").getCnString());}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐