把数字转换成中文货币表示
来源:互联网 发布:2010年最火的网络歌曲 编辑:程序博客网 时间:2024/05/22 08:12
//中文金额单位数组
straChineseUnit = new String[] {"分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
//中文数字字符数组
straChineseNumber = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
/**
* Description 将数字金额转换为中文金额
* @param <p>BigDecimal bigdMoneyNumber 转换前的数字金额</P>
* @return String
调用:myToChineseCurrency("101.89")="壹佰零壹圆捌角玖分"
myToChineseCurrency("100.89")="壹佰零捌角玖分"
myToChineseCurrency("100")="壹佰圆整"
*/
public String DoNumberCurrencyToChineseCurrency(BigDecimal bigdMoneyNumber) {
String strChineseCurrency = "";
//零数位标记
boolean bZero = true;
//中文金额单位下标
int ChineseUnitIndex = 0;
DoPrintMessage("Calling Method DoNumberCurrencyToChineseCurrency");
try {
if (bigdMoneyNumber.intValue() == 0)
return "零圆整";
//处理小数部分,四舍五入
double doubMoneyNumber = Math.round(bigdMoneyNumber.doubleValue() * 100);
//是否负数
boolean bNegative = doubMoneyNumber < 0;
//取绝对值
doubMoneyNumber = Math.abs(doubMoneyNumber);
//循环处理转换操作
while (doubMoneyNumber > 0) {
//整的处理(无小数位)
if (ChineseUnitIndex == 2 && strChineseCurrency.length() == 0)
strChineseCurrency = strChineseCurrency + "整";
//非零数位的处理
if (doubMoneyNumber % 10 > 0) {
strChineseCurrency = straChineseNumber[(int)doubMoneyNumber % 10] + straChineseUnit[ChineseUnitIndex] + strChineseCurrency;
bZero = false;
}
//零数位的处理
else {
//元的处理(个位)
if (ChineseUnitIndex == 2 ) {
//段中有数字
if (doubMoneyNumber > 0) {
strChineseCurrency = straChineseUnit[ChineseUnitIndex] + strChineseCurrency;
bZero = true;
}
}
//万、亿数位的处理
else if (ChineseUnitIndex == 6 || ChineseUnitIndex == 10) {
//段中有数字
if (doubMoneyNumber % 1000 > 0)
strChineseCurrency = straChineseUnit[ChineseUnitIndex] + strChineseCurrency;
}
//前一数位非零的处理
if (!bZero)
strChineseCurrency = straChineseNumber[0] + strChineseCurrency;
bZero = true;
}
doubMoneyNumber = Math.floor(doubMoneyNumber / 10);
ChineseUnitIndex ++;
}
//负数的处理
if (bNegative)
strChineseCurrency = "负" + strChineseCurrency;
}
catch (Exception e) {
DoPrintMessage("Exception Reason : Call Method DoNumberCurrencyToChineseCurrency Error");
DoPrintMessage("Exception Message : " + e.getMessage());
e.printStackTrace();
return "";
}
return strChineseCurrency;
}
straChineseUnit = new String[] {"分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
//中文数字字符数组
straChineseNumber = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
/**
* Description 将数字金额转换为中文金额
* @param <p>BigDecimal bigdMoneyNumber 转换前的数字金额</P>
* @return String
调用:myToChineseCurrency("101.89")="壹佰零壹圆捌角玖分"
myToChineseCurrency("100.89")="壹佰零捌角玖分"
myToChineseCurrency("100")="壹佰圆整"
*/
public String DoNumberCurrencyToChineseCurrency(BigDecimal bigdMoneyNumber) {
String strChineseCurrency = "";
//零数位标记
boolean bZero = true;
//中文金额单位下标
int ChineseUnitIndex = 0;
DoPrintMessage("Calling Method DoNumberCurrencyToChineseCurrency");
try {
if (bigdMoneyNumber.intValue() == 0)
return "零圆整";
//处理小数部分,四舍五入
double doubMoneyNumber = Math.round(bigdMoneyNumber.doubleValue() * 100);
//是否负数
boolean bNegative = doubMoneyNumber < 0;
//取绝对值
doubMoneyNumber = Math.abs(doubMoneyNumber);
//循环处理转换操作
while (doubMoneyNumber > 0) {
//整的处理(无小数位)
if (ChineseUnitIndex == 2 && strChineseCurrency.length() == 0)
strChineseCurrency = strChineseCurrency + "整";
//非零数位的处理
if (doubMoneyNumber % 10 > 0) {
strChineseCurrency = straChineseNumber[(int)doubMoneyNumber % 10] + straChineseUnit[ChineseUnitIndex] + strChineseCurrency;
bZero = false;
}
//零数位的处理
else {
//元的处理(个位)
if (ChineseUnitIndex == 2 ) {
//段中有数字
if (doubMoneyNumber > 0) {
strChineseCurrency = straChineseUnit[ChineseUnitIndex] + strChineseCurrency;
bZero = true;
}
}
//万、亿数位的处理
else if (ChineseUnitIndex == 6 || ChineseUnitIndex == 10) {
//段中有数字
if (doubMoneyNumber % 1000 > 0)
strChineseCurrency = straChineseUnit[ChineseUnitIndex] + strChineseCurrency;
}
//前一数位非零的处理
if (!bZero)
strChineseCurrency = straChineseNumber[0] + strChineseCurrency;
bZero = true;
}
doubMoneyNumber = Math.floor(doubMoneyNumber / 10);
ChineseUnitIndex ++;
}
//负数的处理
if (bNegative)
strChineseCurrency = "负" + strChineseCurrency;
}
catch (Exception e) {
DoPrintMessage("Exception Reason : Call Method DoNumberCurrencyToChineseCurrency Error");
DoPrintMessage("Exception Message : " + e.getMessage());
e.printStackTrace();
return "";
}
return strChineseCurrency;
}
- 把数字转换成中文货币表示
- 把数字转换成中文货币表示
- 一道面试题(把数字货币表示转换为大写表示,如把123.45转换为壹百贰拾叁元肆角伍分 )
- JS货币数字转换中文
- 将阿拉伯数字表示的货币数值转换成以中文大写表示的货币数值
- 把数字转换成中文
- javascript把数字格式化转换成货币类型
- javascript把数字格式化转换成货币型
- C#中把货币、日期转换成中文大写
- C#中把货币、日期转换成中文大写
- 将中文数字转换成英文表示
- 货币数字转换成中文大写的函数
- 任何数字转换为中文货币类型
- 货币数字转换为中文大写格式
- 把人民币数字转换成中文大写
- 把中文表示的数字转成阿拉伯数字
- 阿拉伯数字表示的数字转换成中文习惯读法
- Android工具类——NumberUtils把数字字符串转换成指定国家的货币类型
- c#中的类型转换
- 一个优化后的压缩算法(上)
- 一个优化后的压缩算法(下)
- 还是微软牛!
- 六种“最好”的健身运动(zz)
- 把数字转换成中文货币表示
- UDT长度的含义是什么?
- 如何修改datagrid的样式(比如修改列表头的名称)
- AutoRedraw属性为True时VB都做了什么?
- 光驱也有错!
- webwork使用经验两则
- 丑陋的绵羊——多利
- 黄仁宇 《日本,Nippon,Japan》
- 2005-4-12 网摘