最近在做開發(fā)的時候,有一部分功能要實現(xiàn)把數(shù)字轉換成中文貨幣表示并顯示給客戶端,想了好久不知道如何寫,到google上搜了一下,結果這方面的資料還比較多,看了一下別人寫的,感覺很不錯,就把它復制過來,根據(jù)實際需要改了一下,已經(jīng)測試成功了.代碼如下:
package test;

import java.math.BigDecimal;

public class StrangeCurrency {
/**
* Description 將數(shù)字金額轉換為中文金額
*
*/
public static String DoNumberCurrencyToChineseCurrency(
double bigdMoneyNumber) {
// 中文金額單位數(shù)組
String[] straChineseUnit = { "分", "角", "圓", "拾", "佰", "仟", "萬", "拾",
"佰", "仟", "億", "拾", "佰", "仟" };
// 中文數(shù)字字符數(shù)組
String[] straChineseNumber = { "零", "壹", "貳", "叁", "肆", "伍", "陸", "柒",
"捌", "玖" };
String strChineseCurrency = "";
// 零數(shù)位標記
boolean bZero = true;
// 中文金額單位下標
int ChineseUnitIndex = 0;
// DoPrintMessage("Calling Method DoNumberCurrencyToChineseCurrency");
try {
if (bigdMoneyNumber == 0)
return "零圓整";
// 處理小數(shù)部分,四舍五入
double doubMoneyNumber = Math.round(bigdMoneyNumber * 100);
// 是否負數(shù)
boolean bNegative = doubMoneyNumber < 0;
// 取絕對值
doubMoneyNumber = Math.abs(doubMoneyNumber);
// 循環(huán)處理轉換操作
while (doubMoneyNumber > 0) {
// 整的處理(無小數(shù)位)
if (ChineseUnitIndex == 2 && strChineseCurrency.length() == 0)
strChineseCurrency = strChineseCurrency + "整";
// 非零數(shù)位的處理
if (doubMoneyNumber % 10 > 0) {
strChineseCurrency = straChineseNumber[(int) doubMoneyNumber % 10]
+ straChineseUnit[ChineseUnitIndex]
+ strChineseCurrency;
bZero = false;
}
// 零數(shù)位的處理
else {
// 元的處理(個位)
if (ChineseUnitIndex == 2) {
// 段中有數(shù)字
if (doubMoneyNumber > 0) {
strChineseCurrency = straChineseUnit[ChineseUnitIndex]
+ strChineseCurrency;
bZero = true;
}
}
// 萬、億數(shù)位的處理
else if (ChineseUnitIndex == 6 || ChineseUnitIndex == 10) {
// 段中有數(shù)字
if (doubMoneyNumber % 1000 > 0)
strChineseCurrency = straChineseUnit[ChineseUnitIndex]
+ strChineseCurrency;
}
// 前一數(shù)位非零的處理
if (!bZero)
strChineseCurrency = straChineseNumber[0]
+ strChineseCurrency;
bZero = true;
}
doubMoneyNumber = Math.floor(doubMoneyNumber / 10);
ChineseUnitIndex++;
}
// 負數(shù)的處理
if (bNegative)
strChineseCurrency = "負" + strChineseCurrency;
} catch (Exception e) {
// DoPrintMessage("Exception Reason : Call Method
// DoNumberCurrencyToChineseCurrency Error");
// DoPrintMessage("Exception Message : " + e.getMessage());
e.printStackTrace();
return "";
}
return strChineseCurrency;
}






















































































/**
* @param args
*/
//測試代碼
public static void main(String[] args) {
double rmb=23434.89;
StrangeCurrency sc=new StrangeCurrency();
String s=sc.DoNumberCurrencyToChineseCurrency(rmb);
System.out.println(s);
}
}