如何将字符串或者数字转换成大写货币
2007-04-03 23:18
543 查看
今天去面试却遇到了这样一道题“如何将字符串或者数字转换成大写货币”,当时没有做出来,很气愤,于是就在网上查涉及如何将字符串或者数字转换成大写货币的方法,终于找出了如何做的方法^_^
主要功能:
1. String convertToCapitalMoney(String moneyStr)
将字符串转换成中文的大写货币值
2. String convertToCapitalMoney(double moneyValue)
将数字转换成中文的大写货币值
文件:MoneyConvert.java
public class MoneyConvert {
/*
* <p>Description: 字符串处理的公共类</p>
* <p>Copyright 2006 </p>
* @author jaunt
* @Create Date : 2006-11-23
*/
/*
* 将字符串转换成中文的大写货币值
* @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 moneytaryUnit = "分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿拾佰仟";
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 = moneytaryUnit.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 = moneytaryUnit.substring(i, i + 1);
Result = Result + tempCapital + tempUnit;
tempValue = point % 10;
}
return Result;
}
}
测试代码:
public static void main(String[] args) {
String money1 = MoneyConvert.convertToCapitalMoney("33333.214");
System.out.println(money1);
String money = MoneyConvert.convertToCapitalMoney(33333.214);
System.out.println(money);
}
输出结果:
叁万叁仟叁佰叁拾叁圆贰角壹分
叁万叁仟叁佰叁拾叁圆贰角壹分
主要功能:
1. String convertToCapitalMoney(String moneyStr)
将字符串转换成中文的大写货币值
2. String convertToCapitalMoney(double moneyValue)
将数字转换成中文的大写货币值
文件:MoneyConvert.java
public class MoneyConvert {
/*
* <p>Description: 字符串处理的公共类</p>
* <p>Copyright 2006 </p>
* @author jaunt
* @Create Date : 2006-11-23
*/
/*
* 将字符串转换成中文的大写货币值
* @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 moneytaryUnit = "分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿拾佰仟";
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 = moneytaryUnit.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 = moneytaryUnit.substring(i, i + 1);
Result = Result + tempCapital + tempUnit;
tempValue = point % 10;
}
return Result;
}
}
测试代码:
public static void main(String[] args) {
String money1 = MoneyConvert.convertToCapitalMoney("33333.214");
System.out.println(money1);
String money = MoneyConvert.convertToCapitalMoney(33333.214);
System.out.println(money);
}
输出结果:
叁万叁仟叁佰叁拾叁圆贰角壹分
叁万叁仟叁佰叁拾叁圆贰角壹分
相关文章推荐
- 由递归所想到的:如何将字符串或者数字转换成大写货币的问题
- 如何将字符串或者数字转换成大写货币
- java取出以数字开头或者以数字结尾的字符串,将字符串转换为大写
- VC 中的IP地址控件,关联一个DWORD的变量dwValue,如何将这个dwValue按IP地址显示转化成4个数字或者字符串?
- 如何把阿拉伯数字转换为中文大写?
- 如何在XSLT中将字符串转换为大写或小写形式
- 如何将货币字符串转换为double与jQuery或JavaScript?
- 一个数字转中文大写货币数字的类.完美兼容于C#所有值类型转换和操作,beta版.希望大家多多纠正.
- Java中Boolean与字符串或者数字1和0的转换实例
- int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。
- ABAP--将数字金额转换为人民币大写字符串(增加UNICODE版本)
- mysql里面如何用sql语句让字符串转换为数字
- 如何把数字金额转换成中文大写
- 在C#中如何把decimal型输出成大写货币格式(非字符串代换方法)
- 【原】如何将十六进制字符串转换为数字(数值)
- 将阿拉伯数字表示的货币数值转换成以中文大写表示的货币数值
- ABAP--将数字金额转换为人民币大写字符串
- 如何将数字(包括double型)转换为字符串
- php面试题 数字字符串如何转换成整数类型
- [小技巧] 如何自动将阿拉伯数字转换为中文大写数字