<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 84,  comments - 54,  trackbacks - 0
    package test.format;
    import java.text.NumberFormat;
    import java.util.HashMap;
    public class SimpleMoneyFormat {
    ? public static final String EMPTY = "";
    ? public static final String ZERO = "零";
    ? public static final String ONE = "壹";
    ? public static final String TWO = "貳";
    ? public static final String THREE = "叁";
    ? public static final String FOUR = "肆";
    ? public static final String FIVE = "伍";
    ? public static final String SIX = "陸";
    ? public static final String SEVEN = "柒";
    ? public static final String EIGHT = "捌";
    ? public static final String NINE = "玖";
    ? public static final String TEN = "拾";
    ? public static final String HUNDRED = "佰";
    ? public static final String THOUSAND = "仟";
    ? public static final String TEN_THOUSAND = "萬";
    ? public static final String HUNDRED_MILLION = "億";
    ? public static final String YUAN = "元";
    ? public static final String JIAO = "角";
    ? public static final String FEN = "分";
    ? public static final String DOT = ".";
    ? private static SimpleMoneyFormat formatter = null;
    ? private HashMap chineseNumberMap = new HashMap();
    ? private HashMap chineseMoneyPattern = new HashMap();
    ? private NumberFormat numberFormat = NumberFormat.getInstance();
    ? private SimpleMoneyFormat() {
    ??? numberFormat.setMaximumFractionDigits(4);
    ??? numberFormat.setMinimumFractionDigits(2);
    ??? numberFormat.setGroupingUsed(false);
    ??? chineseNumberMap.put("0", ZERO);
    ??? chineseNumberMap.put("1", ONE);
    ??? chineseNumberMap.put("2", TWO);
    ??? chineseNumberMap.put("3", THREE);
    ??? chineseNumberMap.put("4", FOUR);
    ??? chineseNumberMap.put("5", FIVE);
    ??? chineseNumberMap.put("6", SIX);
    ??? chineseNumberMap.put("7", SEVEN);
    ??? chineseNumberMap.put("8", EIGHT);
    ??? chineseNumberMap.put("9", NINE);
    ??? chineseNumberMap.put(DOT, DOT);
    ??? chineseMoneyPattern.put("1", TEN);
    ??? chineseMoneyPattern.put("2", HUNDRED);
    ??? chineseMoneyPattern.put("3", THOUSAND);
    ??? chineseMoneyPattern.put("4", TEN_THOUSAND);
    ??? chineseMoneyPattern.put("5", TEN);
    ??? chineseMoneyPattern.put("6", HUNDRED);
    ??? chineseMoneyPattern.put("7", THOUSAND);
    ??? chineseMoneyPattern.put("8", HUNDRED_MILLION);
    ? }
    ? public static SimpleMoneyFormat getInstance() {
    ??? if (formatter == null)
    ????? formatter = new SimpleMoneyFormat();
    ??? return formatter;
    ? }
    ? public String format(String moneyStr) {
    ??? checkPrecision(moneyStr);
    ??? String result;
    ??? result = convertToChineseNumber(moneyStr);
    ??? result = addUnitsToChineseMoneyString(result);
    ??? return result;
    ? }
    ? public String format(double moneyDouble) {
    ??? return format(numberFormat.format(moneyDouble));
    ? }
    ? public String format(int moneyInt) {
    ??? return format(numberFormat.format(moneyInt));
    ? }
    ? public String format(long moneyLong) {
    ??? return format(numberFormat.format(moneyLong));
    ? }
    ? public String format(Number moneyNum) {
    ??? return format(numberFormat.format(moneyNum));
    ? }
    ? private String convertToChineseNumber(String moneyStr) {
    ??? String result;
    ??? StringBuffer cMoneyStringBuffer = new StringBuffer();
    ??? for (int i = 0; i < moneyStr.length(); i++) {
    ????? cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1)));
    ??? }
    ??? //拾佰仟萬億等都是漢字里面才有的單位,加上它們
    ??? int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
    ??? int moneyPatternCursor = 1;
    ??? for (int i = indexOfDot - 1; i > 0; i--) {
    ????? cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY + moneyPatternCursor));
    ????? moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor + 1;
    ??? }
    ??? String fractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf("."));
    ??? cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."), cMoneyStringBuffer.length());
    ??? while (cMoneyStringBuffer.indexOf("零拾") != -1) {
    ????? cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"), cMoneyStringBuffer.indexOf("零拾") + 2, ZERO);
    ??? }
    ??? while (cMoneyStringBuffer.indexOf("零佰") != -1) {
    ????? cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零佰"), cMoneyStringBuffer.indexOf("零佰") + 2, ZERO);
    ??? }
    ??? while (cMoneyStringBuffer.indexOf("零仟") != -1) {
    ????? cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"), cMoneyStringBuffer.indexOf("零仟") + 2, ZERO);
    ??? }
    ??? while (cMoneyStringBuffer.indexOf("零萬") != -1) {
    ????? cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零萬"), cMoneyStringBuffer.indexOf("零萬") + 2, TEN_THOUSAND);
    ??? }
    ??? while (cMoneyStringBuffer.indexOf("零億") != -1) {
    ????? cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零億"), cMoneyStringBuffer.indexOf("零億") + 2, HUNDRED_MILLION);
    ??? }
    ??? while (cMoneyStringBuffer.indexOf("零零") != -1) {
    ????? cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零零"), cMoneyStringBuffer.indexOf("零零") + 2, ZERO);
    ??? }
    ??? if (cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1)
    ????? cMoneyStringBuffer.delete(cMoneyStringBuffer.length() - 1, cMoneyStringBuffer.length());
    ??? cMoneyStringBuffer.append(fractionPart);
    ??? result = cMoneyStringBuffer.toString();
    ??? return result;
    ? }

    ? private String addUnitsToChineseMoneyString(String moneyStr) {
    ??? String result;
    ??? StringBuffer cMoneyStringBuffer = new StringBuffer(moneyStr);
    ??? int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
    ??? cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1, YUAN);
    ?

    posted on 2007-01-13 13:57 JavaCoffe 閱讀(1468) 評(píng)論(4)  編輯  收藏


    FeedBack:
    # re: [轉(zhuǎn)]阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國傳統(tǒng)的貨幣形式[未登錄]
    2007-03-15 13:20 | tony
    經(jīng)典啊  回復(fù)  更多評(píng)論
      
    # re: [轉(zhuǎn)]阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國傳統(tǒng)的貨幣形式[未登錄]
    2007-04-24 11:25 | a
    # re: [轉(zhuǎn)]阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國傳統(tǒng)的貨幣形式
    2007-10-27 14:51 | 綿
    十分有趣!  回復(fù)  更多評(píng)論
      
    # re: [轉(zhuǎn)]阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國傳統(tǒng)的貨幣形式[未登錄]
    2008-03-09 15:01 | test
    代碼不全!  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2007年1月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(5)

    隨筆分類(80)

    收藏夾(1)

    最新隨筆

    積分與排名

    • 積分 - 58037
    • 排名 - 897

    最新評(píng)論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲一卡2卡3卡4卡5卡6卡| 亚洲日本中文字幕区| 亚洲欧美精品午睡沙发| 男女做羞羞的事视频免费观看无遮挡| 亚洲国产午夜中文字幕精品黄网站| 亚洲av无码专区在线电影天堂| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 扒开双腿猛进入爽爽免费视频| 亚洲最大成人网色香蕉| 免费观看成人毛片a片2008| 亚洲一区二区三区高清在线观看 | 免费无毒a网站在线观看| 亚洲国产精品无码久久九九| 亚洲阿v天堂在线2017免费| 亚洲欧洲国产精品香蕉网| 在线观看肉片AV网站免费| 亚洲AV人无码综合在线观看| 91福利免费视频| 亚洲偷自拍另类图片二区| 免费一级做a爰片久久毛片潮喷| 美女隐私免费视频看| 亚洲综合最新无码专区| 久久永久免费人妻精品| 亚洲中文字幕久久精品无码2021| 精品国产免费观看| 久久99精品免费一区二区| 亚洲精品在线视频观看| 免费无码成人AV片在线在线播放| xxxxx做受大片在线观看免费| 久久精品夜色国产亚洲av| 成年女人18级毛片毛片免费| 成人一级免费视频| 亚洲视频一区网站| 国产午夜免费福利红片| 秋霞人成在线观看免费视频| 亚洲人成色77777在线观看| 亚洲午夜福利在线观看| 97视频热人人精品免费| 久久久精品视频免费观看| youjizz亚洲| 亚洲国产另类久久久精品黑人|