近来接触到人民币大写与阿拉伯数字相互转换的问题,贴上来保存
package com.fancy.algorithm;
/**
*
* @author fancy205
* 2010-05-04
*/
public class MoneyUtil {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(numToCN(10000000000L));
// System.out.println(cnToNum("玖拾亿伍仟万零伍元"));
// System.out.println(Integer.MAX_VALUE);
}
/**
* 阿拉伯数字转为人民币大写
* @param num 123456789
*/
protected static String numToCN(long momey){
String[] unitArray = {"分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
String[] numArray = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
if (momey == 0) {
return "零元整";
}
String str = Long.toString(momey*100);
char[] arr = str.toCharArray();
int len = arr.length;
int zero = 0;
StringBuffer targetNum = new StringBuffer();
for(int i=0;i<arr.length;i++){
String s = arr[i]+"";
int num = Integer.parseInt(s);
int unitNum = len-i-1;
if(num==0){
zero++;
if (unitNum == 2 || unitNum == 6 || unitNum == 10)
{
if (unitNum == 2 || zero < 4)
targetNum.append(unitArray[unitNum]);
zero = 0;
}
}else{
if (zero > 0)
{
targetNum.append(numArray[0]);
zero = 0;
}
targetNum.append(numArray[num]);
targetNum.append(unitArray[unitNum]);
}
}
if(zero>0){
targetNum.append("整");
}
return targetNum.toString();
}
/**
* 人民币大写转换成阿拉伯数字
* @param str 壹亿五千零二十万零五元
* @return
*/
protected static long cnToNum(String str){
String numStr = "零壹贰叁肆伍陆柒捌玖";
String unitStr = "分角圆拾佰仟万拾佰仟亿拾佰仟";
char[] arr = str.toCharArray();
long sum = 0l;
int len = arr.length;
int num = 0;
int unit = 0;
for(int i=0;i<len;i++){
String key = arr[i]+"";
int index = numStr.indexOf(key);
if(index!=-1) {
num = index;
}else {
unit = unitStr.indexOf(key);
if(num!=0){
if(unit==6 || unit==10 || unit==14){
sum *= Math.pow(10,unit-2);
}else {
if(unit<=2){
sum +=num;
num = 0;
}else{
sum += num * Math.pow(10,unit-2);
}
}
}
}
}
return sum;
}
}
分享到:
相关推荐
本人用c写的完成汉语数字串与阿拉伯数字串间转换的一个小工具,完全基于串操作,不需要经过中间数值表示,原则上可以对任意长数字串进行转换,附带汉语数字串的大小写转换功能。
阿拉伯数字转换为人民币大写
使用java编程实现将人民币大写转换为阿拉伯数字。本程序仅实现万元以下的人民币转换,输入数据必须以元结尾。
汉语大写数字转换成阿拉伯数字。支持如下转换 '一千二百二十一万九千三百五十七亿一千二百二十一万九千零五十七', '一千二百二十一', '一千零十', '一万零一百', '一千零十一', '一万零一百十一', '一千二百...
将阿拉伯数字转换为大写数字,主要解决小数点问题,
将阿拉伯数字转换成大写人民币汉字 大写人民币
人民币数字转换成汉字大写 android Java 运行效率
九种人民币大写数字相互转换及新增人民币写法三种
环境:vs2005 C# 功能:阿拉伯数字转换为中文大写数字
人民币由阿拉伯数字转为大写中文
对于输入的数字可以转换成人民币大写,关于读零参照下面的约定 整数部分里的零读出或不读的情况有以下几种: 1、不读出的情况: 零在每级的结尾时这里的一级是指每四位,个位到千位是一级, 万位到亿位是一级,...
阿拉伯数字转换为中文大写
在excel中使用公式把阿拉伯数字转换成英文大写
我自己写的一个把excel表中阿拉伯数字转换成英文和大写。主要应用在财务方面,小数点保留2位
将大写数字转换为阿拉伯数字
本例子将数字以汉字中的大写数字表示形式显示在页面中。例如“78.79”转换城”“柒拾捌元柒角玖分
人民币大写金额转换工具人民币大写金额转换工具人民币大写金额转换工具人民币大写金额转换工具
本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个...
1、该dll能将阿拉伯数字转换为汉字数字或者中文大写金额。例如1234567.07可转换为: “一百二十三万四千五百六十七点零七”或“壹佰贰拾叁万肆仟伍佰陆拾柒圆零柒分”。 目前支持正负千亿以内(整数部分不超过12位)...
独立开发,实测可用, 将阿拉伯和中文数字组合的字符串转成阿拉伯数字的整型 包。例如: “八万三千20”就可以转成整型 803020 。解压后,引用包。调用方法 在UnitTest.java 中有