懒得写小数后的转换了,以后有时间补上
public class MoneyConvent {
//不用String是因为String内部还是char数组,自己用数组用随机查找快一点
private static final char[] HanChar={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
private static final char[] sbq={'个','拾','佰','仟'};
private static final char[] wy={'亿','万'};
public static String fromArabToCharacter(String arab){
//预设一个较大的空间存储转换后的汉字序列
char[] temp=new char[arab.length()*3];
int j=0;
//遍历每一位数字
for (int i = 0; i < arab.length(); i++) {
//如果是万位或亿位并且不是零位,有可能要加万或亿字
if((i%4==0) && i!=0){
//i能进来说明i只能是4的倍数,wy[(i+1)/4%2]=='亿' 看该数字位数i是否是8的倍数(输出亿) 否则就是4的倍数(有可能输出万)
if(wy[(i+1)/4%2]=='亿' || !isWanZero(arab, i)){
temp[j++]=wy[(i+1)/4%2];
}
}
//如果该位上是0就什么都不加
if(getHanChar(arab,i)=='零'){
continue;
}
//如果不是4的倍数,就加上相应的 十 百 千
if((i%4)!=0){
temp[j++]=sbq[i%4];
}
//加上该位上数字的汉字
temp[j++]=getHanChar(arab,i);
}
//转换成StringBuffer后反转序列然后去掉空位加上圆,整数部分就完成了
StringBuffer sb=new StringBuffer(String.valueOf(temp));
return sb.reverse().toString().trim()+"圆";
}
//需不需要输出万字, 主要看万位到下一个亿位之前是否全是0
private static boolean isWanZero(String arab,int i){
if(getHanChar(arab,i)!='零'){
return false;
}else if(getHanChar(arab,i+1)!='零'){
return false;
}else if(getHanChar(arab,i+2)!='零'){
return false;
}else if(getHanChar(arab,i+3)!='零'){
return false;
}
return true;
}
private static char getHanChar(String arab,int i){
return HanChar[Integer.parseInt(arab.substring(arab.length()-1-i, arab.length()-i))];
}
public static void main(String[] args) {
System.out.println(fromArabToCharacter("65432109876543210"));
System.out.println(fromArabToCharacter("10200400000000000"));
}
}
分享到:
相关推荐
将阿拉伯数字转化成汉字金钱 如1234.45转化为壹仟贰佰叁拾肆元肆角伍分
这个功能的实现可能涉及到将阿拉伯数字(如1, 2, 3等)转化为中文数字(如一、二、三),以及将整数和小数部分分别转换为中文的大写形式,比如“壹佰贰拾叁元肆角伍分”。 描述中提到,"js是定义好的函数,使用...
这个“大小金额转换.zip”压缩包提供了一个实例,展示了如何用C++ Builder 6.0 实现将输入的阿拉伯数字转换为大写汉字表示的金额,这对于财务软件或任何处理金钱表示的系统来说是非常实用的功能。 首先,我们需要...
每个部分都通过查找中文数字在`CHINESE_DIGITS`数组中的位置并乘以相应的单位权重来转换为阿拉伯数字。 在实际项目中,为了提高代码的可维护性和可扩展性,可以将映射表和解析逻辑封装成更独立的组件,例如使用枚举...
此外,考虑到中国特有的大写金额表示法(如壹、贰、叁等),源代码可能还包含了将阿拉伯数字转换为中文大写的逻辑。这涉及到一个映射表,将数字对应到对应的中文字符,然后拼接成字符串。这部分代码可能具有一定的...
第二个问题是数字的格式化转换,即把阿拉伯数字的金额转换为中文的传统表示方式。`SimpleMoneyFormat`类实现了一个简单的数字到中文货币格式的转换。类中定义了一系列的静态常量,代表了中文数字的各个位值。私有...
这种转换在财务报表、发票和合同等正式文档中非常常见,因为汉字的表达方式可以减少因阿拉伯数字误读或篡改引发的误解。 标签"money _money _money"进一步强调了这个主题的焦点,即与金钱相关的处理。 从压缩包内...
3. **阿拉伯数字与中文大写转换的特殊规则**: - 阿拉伯数字中间有“0”时,中文大写应写“零”字,如¥1409.50应写为人民币壹仟肆佰零玖元伍角。 - 连续多个“0”时,中文大写可只写一个“零”字,如¥6007.14应...
1. 字符映射:首先,你需要创建一个字符映射表,将0-9的阿拉伯数字映射到对应的汉字大写数字,如"零"、"壹"、"贰"等。还需要考虑小数点、单位"元"、"角"、"分"以及"整"(代表没有小数部分)。 2. 数字处理:在接收...
其次,金额大写转换在财务软件和银行系统中非常常见,它涉及到将阿拉伯数字转换为中文大写数字,以避免在处理大量金钱时的误解。在Java中,可以编写函数或者使用现有的库来实现这个功能。基本思路是定义一个映射表,...
万年历查询、手机号码归属地查询、免费在线翻译、手机话费查询、生肖属相查询、黄金价格走势图、股市行情查询、阿拉伯数字译成英文、省市自治区简称、二十四节气表、女性预产期自测、常用电话号码查询、定时关机工具...