import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Transform {
public static void main(String[] args){
String number = "101000001010";
String str1 = null;
String str2 = null;
Map numMap = new HashMap();
numMap.put('0', "零");
numMap.put('1', "壹");
numMap.put('2', "贰");
numMap.put('3', "叁");
numMap.put('4', "肆");
numMap.put('5', "伍");
numMap.put('6', "陆");
numMap.put('7', "柒");
numMap.put('8', "捌");
numMap.put('9', "玖");
//去掉小数位,不进行换算.
if(number.indexOf(".") == -1){
str1 = number;
}else{
str1 = number.substring(0,number.indexOf("."));
str2 = number.substring(number.indexOf(".")+1);
}
System.out.println(str1);
//每隔4位数字,放入到一个集合中.
ArrayList al = new ArrayList();
while(true){
String ss = "";
if(str1.length() >4){
ss = str1.substring(str1.length()-4,str1.length());
str1 = str1.substring(0,str1.length()-4);
al.add(ss);
}else{
ss = str1.substring(0);
for(int k =0;k<(4-str1.length());k++){
ss="0"+ss;
}
al.add(ss);
break;
}
}
String finalStr = "";
//反转集合
Collections.reverse(al);
//拼成最终的字符串.
for(int i =0;i<al.size();i++){
char[] cs =((String)al.get(i)).toCharArray();
if(al.size() == 3 ){
if(i == 0){
finalStr += toChinese(cs, numMap)+"亿";
}else if(i == 1){
if(toChinese(cs, numMap) == ""){
finalStr += "零";
}else{
finalStr += toChinese(cs, numMap)+"万";
}
}else{
finalStr += toChinese(cs, numMap);
}
}else if(al.size() == 2 ){
if(i == 0){
finalStr += toChinese(cs, numMap)+"万";
}else{
finalStr += toChinese(cs, numMap);
}
}else if(al.size() == 1){
finalStr += toChinese(cs, numMap);
}
}
System.out.println(finalStr+"元整");
}
//把4位数字换成汉字.根据排列组合,共有16中不同.
public static String toChinese(char[] cs,Map numMap){
//000x -- 1
if(cs[0]=='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]!='0'){
return (String) numMap.get(cs[3]);
}
//00x0 -- 2
else if(cs[0]=='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[2])+"拾";
}
//0x00 -- 3
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]=='0'){
return numMap.get(cs[1])+"佰";
}
//x000 -- 4
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟";
}
//00xx -- 5
else if(cs[0]=='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[2])+"拾" + numMap.get(cs[3]);
}
//0x0x -- 6
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]!='0'){
return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + numMap.get(cs[3]);
}
//x00x -- 7
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]=='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + numMap.get(cs[3]);
}
//0xxx -- 8
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
}
//x0xx -- 9
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) +numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
}
//xxxx -- 10
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2]) + "拾" + numMap.get(cs[3]);
}
//xxx0 -- 11
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2]) + "拾" ;
}
//xx00 -- 12
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" ;
}
//0xx0 -- 13
else if(cs[0]=='0' && cs[1]!='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[1])+"佰" + numMap.get(cs[2]) + "拾" ;
}
//xx0x -- 14
else if(cs[0]!='0' && cs[1]!='0'&& cs[2]=='0'&& cs[3]!='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) + "佰" +numMap.get(cs[2])+numMap.get(cs[3]) ;
}
//x0x0 -- 15
else if(cs[0]!='0' && cs[1]=='0'&& cs[2]!='0'&& cs[3]=='0'){
return numMap.get(cs[0])+"仟" + numMap.get(cs[1]) +numMap.get(cs[2])+"拾";
}
//0000 -- 16
else{
return "";
}
}
}
分享到:
相关推荐
将阿拉伯数字转化成汉字金钱 如1234.45转化为壹仟贰佰叁拾肆元肆角伍分
1、该dll能将阿拉伯数字转换为汉字数字或者中文大写金额。例如1234567.07可转换为: “一百二十三万四千五百六十七点零七”或“壹佰贰拾叁万肆仟伍佰陆拾柒圆零柒分”。 目前支持正负千亿以内(整数部分不超过12位)...
读入一串阿拉伯数字,将其转化为中文金额的大写方式。这是老师布置的一题回家作业。花了一天时间完成的。虽然代码比较烦琐。但是所有的几率都考虑到了。
用visual studio 2008编写的将汉字金额转换为阿拉伯数字显示形式,网站上都是讲阿拉伯数组转化为汉字,自己索性写了一个。。
阿拉伯数字金额转换成汉字金额,比如1000.00 转换成 壹仟元。
用java实现将阿拉伯数字转换为金额的汉字大写
佛慈悲,应要求给整个下载在我的资源中,其中包含自学习桌面编程以来所找的资料及未完成的部分学习代码,从未完成的开始转入了另一个急需开发软件的研发工作,所以没时间来作这个的继续,打包原封不动提供学习了. ...
修改了输入小数转换一个错误,修正窗体可调整和图标等
mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。
本例子将数字以汉字中的大写数字表示形式显示在页面中。例如“78.79”转换城”“柒拾捌元柒角玖分
将数字转换成大写的汉字或者大写的金额的例子。复制过去就能用,里边有main方法说明,复制一个new对象就可以了
*数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰...
阿拉伯数字 转 中文大写 金额转换 金额转换 代码!!
将阿拉伯数字金额转成中文大写 "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"......
Android中数字转中文,金额转大写源码,支持口语化转换。
NULL 博文链接:https://chenjumin.iteye.com/blog/629462
有些变态的报表需要把数字转换成英文输出,但愿这个能帮得到你 one hundred eighty-eight thousand, eight hundred one hundred eighty-eight thousand, eight hundred one one hundred eighty-eight thousand, ...
本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法。分享给大家供大家参考,具体如下: 一、需求 今天写了三千二百行代码。 今天写了3200行代码。 两行意思相同,只是表达方式不太能够,统一掉。 二、原理 ...
NULL 博文链接:https://lovinchan.iteye.com/blog/266628
阿拉伯数字转中文大字,输入小写金额转中文大写