注:示例程序会将字符串或者数字转换成大写货币的表现形式。可以把这一部分放到字符串处理的公共类 StringUtils 中,和 DateUtils (《时间日期的一些处理方法》)一起,作为项目的公共部分 CommonUtils ,供其它程序进行调用。CommonUtils 就好像是一个辅助工具,使我们能更好的完成项目。我会逐步去添加完善 CommonUtils ,你也可以从现在开始创建自己的代码库,毕竟有很多有用的代码是可以复用的。省时省力,何乐而不为?
主要内容:
MoneyConvert.java --- 本文当中只涉及如何将字符串或者数字转换成大写货币的方法
主要功能:
1. String convertToCapitalMoney(String moneyStr)
将字符串转换成中文的大写货币值
2. String convertToCapitalMoney(double moneyValue)
将数字转换成中文的大写货币值
文件:MoneyConvert.java
package Common.Utils.StringUtils;
/**
*
* <p>Description: 字符串处理的公共类</p>
* <p>Copyright 2006 mjn.</p>
* @author ma jia nan
* @Create Date : 2006-10-16
* @Version : 1.0
*/
public class MoneyConvert {
/**
* 将字符串转换成中文的大写货币值
*
* @param moneyStr
* @return
*/
public static String convertToCapitalMoney(String moneyStr) {
double money = 0 ;
try {
money = Double.parseDouble(moneyStr);
} catch (Exception e) {
}
return convertToCapitalMoney(money);
}
/**
* 将数字转换成中文的大写货币值
*
* @param moneyValue
* @return
*/
public static String convertToCapitalMoney( double moneyValue) {
double money = moneyValue + 0.005 ; // 防止浮点数四舍五入造成误差
String Result = "" ;
String capitalLetter = " 零壹贰叁肆伍陆柒捌玖 " ;
String monetaryUnit = " 分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿拾佰仟 " ;
String tempCapital, tempUnit;
int integer; // 钱的整数部分
int point; // 钱的小数部分
int tempValue; // 钱的每一位的值
integer = ( int ) money;
point = ( int ) (100 * (money - (float ) integer));
if (integer == 0 )
Result = " 零圆 " ;
/*
* 货币整数部分操作
* 1. 依次取得每一位上的值
* 2. 转换成大写
* 3. 确定货币单位
*/
for ( int i = 1 ; integer > 0 ; i ++ ) {
tempValue = (integer % 10 );
tempCapital = capitalLetter.substring(tempValue, tempValue + 1 );
tempUnit = monetaryUnit.substring(i + 1 , i + 2 );
Result = tempCapital + tempUnit + Result;
integer = integer / 10 ;
}
/*
* 货币小数部分操作
*/
tempValue = (point / 10 );
for ( int i = 1 ; i > - 1 ; i -- ) {
tempCapital = capitalLetter.substring(tempValue, tempValue + 1 );
tempUnit = monetaryUnit.substring(i, i + 1 );
Result = Result + tempCapital + tempUnit;
tempValue = point % 10 ;
}
return Result;
}
}
测试代码:
public static void main(String[] args) {
String money = MoneyConvert.convertToCapitalMoney( " 3456789.347 " );
System.out.println(money);
String money1 = MoneyConvert.convertToCapitalMoney( 3456789.347 );
System.out.println(money1);
}
结果:
叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角伍分
叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角伍分
主要内容:
MoneyConvert.java --- 本文当中只涉及如何将字符串或者数字转换成大写货币的方法
主要功能:
1. String convertToCapitalMoney(String moneyStr)
将字符串转换成中文的大写货币值
2. String convertToCapitalMoney(double moneyValue)
将数字转换成中文的大写货币值
文件:MoneyConvert.java
package Common.Utils.StringUtils;
/**
*
* <p>Description: 字符串处理的公共类</p>
* <p>Copyright 2006 mjn.</p>
* @author ma jia nan
* @Create Date : 2006-10-16
* @Version : 1.0
*/
public class MoneyConvert {
/**
* 将字符串转换成中文的大写货币值
*
* @param moneyStr
* @return
*/
public static String convertToCapitalMoney(String moneyStr) {
double money = 0 ;
try {
money = Double.parseDouble(moneyStr);
} catch (Exception e) {
}
return convertToCapitalMoney(money);
}
/**
* 将数字转换成中文的大写货币值
*
* @param moneyValue
* @return
*/
public static String convertToCapitalMoney( double moneyValue) {
double money = moneyValue + 0.005 ; // 防止浮点数四舍五入造成误差
String Result = "" ;
String capitalLetter = " 零壹贰叁肆伍陆柒捌玖 " ;
String monetaryUnit = " 分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿拾佰仟 " ;
String tempCapital, tempUnit;
int integer; // 钱的整数部分
int point; // 钱的小数部分
int tempValue; // 钱的每一位的值
integer = ( int ) money;
point = ( int ) (100 * (money - (float ) integer));
if (integer == 0 )
Result = " 零圆 " ;
/*
* 货币整数部分操作
* 1. 依次取得每一位上的值
* 2. 转换成大写
* 3. 确定货币单位
*/
for ( int i = 1 ; integer > 0 ; i ++ ) {
tempValue = (integer % 10 );
tempCapital = capitalLetter.substring(tempValue, tempValue + 1 );
tempUnit = monetaryUnit.substring(i + 1 , i + 2 );
Result = tempCapital + tempUnit + Result;
integer = integer / 10 ;
}
/*
* 货币小数部分操作
*/
tempValue = (point / 10 );
for ( int i = 1 ; i > - 1 ; i -- ) {
tempCapital = capitalLetter.substring(tempValue, tempValue + 1 );
tempUnit = monetaryUnit.substring(i, i + 1 );
Result = Result + tempCapital + tempUnit;
tempValue = point % 10 ;
}
return Result;
}
}
测试代码:
public static void main(String[] args) {
String money = MoneyConvert.convertToCapitalMoney( " 3456789.347 " );
System.out.println(money);
String money1 = MoneyConvert.convertToCapitalMoney( 3456789.347 );
System.out.println(money1);
}
结果:
叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角伍分
叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角伍分