`

人民币转换

J# 
阅读更多

public class TranMoney {
 public TranMoney() {
 }
// public static void main(String ars[]){
//  System.out.println(getChnmoney("11000.01"));
//  
// }
 public static String getChnmoney(String strNum) {
  int n, m, k, i, j, q, p, s = 0;
  int length, subLength, pstn;
  String change, output, subInput, input = strNum;
  output = "";
  if (strNum.equals(""))
   return null;
  else {
   length = input.length();
   pstn = input.indexOf('.'); // 小数点的位置

   if (pstn == -1) {
    subLength = length;// 获得小数点前的数字
    subInput = input;
   } else {
    subLength = pstn;
    subInput = input.substring(0, subLength);
   }

   char[] array = new char[4];
   char[] array2 = { '仟', '佰', '拾' };
   char[] array3 = { '亿', '万', '元', '角', '分' };

   n = subLength / 4;// 以千为单位
   m = subLength % 4;

   if (m != 0) {
    for (i = 0; i < (4 - m); i++) {
     subInput = '0' + subInput;// 补充首位的零以便处理
    }
    n = n + 1;
   }
   k = n;

   for (i = 0; i < n; i++) {
    p = 0;
    change = subInput.substring(4 * i, 4 * (i + 1));
    array = change.toCharArray();// 转换成数组处理

    for (j = 0; j < 4; j++) {
     output += formatC(array[j]);// 转换成中文
     if (j < 3) {
      output += array2[j];// 补进单位,当为零是不补(千百十)
     }
     p++;
    }

    if (p != 0)
     output += array3[3 - k];// 补进进制(亿万元分角)
    // 把多余的零去掉

    String[] str = { "零仟", "零佰", "零拾" };
    for (s = 0; s < 3; s++) {
     while (true) {
      q = output.indexOf(str[s]);
      if (q != -1)
       output = output.substring(0, q) + "零"
         + output.substring(q + str[s].length());
      else
       break;
     }
    }
    while (true) {
     q = output.indexOf("零零");
     if (q != -1)
      output = output.substring(0, q) + "零"
        + output.substring(q + 2);
     else
      break;
    }
    String[] str1 = { "零亿", "零万", "零元" };
    for (s = 0; s < 3; s++) {
     while (true) {
      q = output.indexOf(str1[s]);
      if (q != -1)
       output = output.substring(0, q)
         + output.substring(q + 1);
      else
       break;
     }
    }
    k--;
   }

   if (pstn != -1)// 小数部分处理
   {
    for (i = 1; i < length - pstn; i++) {
     if (input.charAt(pstn + i) != '0') {
      output += formatC(input.charAt(pstn + i));
      output += array3[2 + i];
     } else if (i < 2)
      output += "零";
     else
      output += "";
    }
   }
   if (output.substring(0, 1).equals("零"))
    output = output.substring(1);
   if (output.substring(output.length() - 1, output.length()).equals(
     "零"))
    output = output.substring(0, output.length() - 1);
   if(output.indexOf("分")>0||output.indexOf("角")>0){
    return output;
   }else{
    return output += "整";
   }
   
  }
 }

 public static String get3Eng(String strNum) {
  String strEng = "";
  String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",
    "SEVEN", "EIGHT", "NINE" };
  String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",
    "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };
  String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",
    "SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };
  int num = Integer.parseInt(strNum);
  int b = num / 100;
  int t = (num % 100) / 10;
  int g = (num % 100) % 10;
  if (b != 0) {
   strEng = strEng + str[b] + " " + str2[9];
  }

  if (t == 0) {
   if (g != 0) {
    if (b != 0) {
     strEng = strEng + " AND ";
    }
    strEng = strEng + str[g];
   }
  } else if (t == 1) {
   if (b != 0) {
    strEng = strEng + " AND ";
    num = num % 100;
   }
   strEng = strEng + str1[num - 10];
  } else if (t != 1) {
   if (g != 0) {
    if (b != 0) {
     strEng = strEng + " AND ";
    }
    strEng = strEng + str2[t - 1] + "-" + str[g];
   } else {
    if (b != 0) {
     strEng = strEng + " AND ";
    }
    strEng = strEng + str2[t - 1] + str[g];
   }
  }
  return strEng;
 }

 public static String getCent(String strNum) {
  String strEng = "";
  String str[] = { "", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX",
    "SEVEN", "EIGHT", "NINE" };
  String str1[] = { "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN",
    "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN" };
  String str2[] = { "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY",
    "SEVENTY", "EIGHTY", "NINETY", "HUNDRED" };
  String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",
    "", "", "MILLION", "", "", "BILLION", "", "" };
  if (strNum.equals(""))
   return null;
  else {
   int length = strNum.length();
   if (length != 3) {
    return "输入的位数错误!";
   }
   int cent = Integer.parseInt(strNum.substring(1, 3));
   if (cent == 0) {
    return strEng;
   }
   if (cent < 10) {
    strEng = str3[0] + " " + strEng + str[cent];
   } else if (cent >= 10 && cent <= 19) {
    strEng = str3[0] + " " + strEng + str1[cent - 10];
   } else if (cent > 19) {
    int jiao = cent / 10;
    int fen = cent % 10;
    if (fen != 0) {
     strEng = str3[0] + " " + strEng + str2[jiao - 1] + "-"
       + str[fen];
    } else {
     strEng = str3[0] + " " + strEng + str2[jiao - 1] + str[fen];
    }
   }
   return strEng;
  }
 }

 public static String getEngmoney(String strNum) {
  String strNumber = "";
  String str3[] = { "CENTS", "", "DOLLARS", "", "HUNDRED", "THOUSAND",
    "", "", "MILLION", "", "", "BILLION", "", "" };
  String strEng = "";
  strNumber = strNum;
  int pointbz = strNumber.indexOf(".");
  if (pointbz < 0) {
   strNumber = strNumber + ".00";
  } else if (pointbz > 0) {
   int k = strNum.length() - pointbz;
   if (k == 2) {
    strNumber = strNumber + "0";
   } else if (k == 1) {
    strNumber = strNumber + "00";
   }
  }
  int length = strNumber.length();
  if (length > 16) {
   return "您输入的值过大系统无法处理!";
  }
  String strb = "";
  String strm = "";
  String strq = "";
  String stry = "";
  String strf = "";
  // 得到分
  if (length == 3) {
   strf = getCent(strNumber);
   strEng = strEng + strf;
  } else if (length > 3 && length < 7) {
   stry = get3Eng(strNumber.substring(0, length - 3));
   strf = getCent(strNumber.substring(length - 3, length));
   strEng = strEng + stry + " " + str3[2];
   if (!strf.equals("")) {
    strEng = strEng + " AND " + strf;
   }
  } else if (length > 6 && length < 10) {
   strq = get3Eng(strNumber.substring(0, length - 6));
   stry = get3Eng(strNumber.substring(length - 6, length - 3));
   strf = getCent(strNumber.substring(length - 3, length));
   strEng = strEng + strq + " " + str3[5];
   if (stry.equals("")) {
    strEng = strEng + " " + stry;
   } else {
    strEng = strEng + " " + stry + " " + str3[2];
   }
   if (!strf.equals("")) {
    strEng = strEng + " AND " + strf;
   }
  } else if (length > 9 && length < 13) {
   strm = get3Eng(strNumber.substring(0, length - 9));
   strq = get3Eng(strNumber.substring(length - 9, length - 6));
   stry = get3Eng(strNumber.substring(length - 6, length - 3));
   strf = getCent(strNumber.substring(length - 3, length));
   strEng = strEng + strm + " " + str3[8];
   if (!strq.equals("")) {
    strEng = strEng + " " + strq + " " + str3[5];
   }
   if (!stry.equals("")) {
    strEng = strEng + " " + stry + " " + str3[2];
   } else {
    strEng = strEng + " " + str3[2];
   }
   if (!strf.equals("")) {
    strEng = strEng + " AND " + strf;
   }
  } else if (length > 12 && length < 16) {
   strb = get3Eng(strNumber.substring(0, length - 12));
   strm = get3Eng(strNumber.substring(length - 12, length - 9));
   strq = get3Eng(strNumber.substring(length - 9, length - 6));
   stry = get3Eng(strNumber.substring(length - 6, length - 3));
   strf = getCent(strNumber.substring(length - 3, length));
   strEng = strEng + strb + " " + str3[11];
   if (!strm.equals("")) {
    strEng = strEng + " " + strm + " " + str3[8];
   }
   if (!strq.equals("")) {
    strEng = strEng + " " + strq + " " + str3[5];
   }
   if (!stry.equals("")) {
    strEng = strEng + " " + stry + " " + str3[2];
   } else {
    strEng = strEng + " " + str3[2];
   }
   if (!strf.equals("")) {
    strEng = strEng + " AND " + strf;
   }
  }

  return strEng + " ONLY";
 }

 public static String formatC(char x) {
  String a = "";
  switch (x) {
  case '0':
   a = "零";
   break;
  case '1':
   a = "壹";
   break;
  case '2':
   a = "贰";
   break;
  case '3':
   a = "叁";
   break;
  case '4':
   a = "肆";
   break;
  case '5':
   a = "伍";
   break;
  case '6':
   a = "陆";
   break;
  case '7':
   a = "柒";
   break;
  case '8':
   a = "捌";
   break;
  case '9':
   a = "玖";
   break;
  }
  return a;
 }
}

分享到:
评论

相关推荐

    人民币转换(原代码)

    【人民币转换】是一个常见的编程需求,特别是在金融和会计领域,涉及到财务报表、发票以及银行交易等场景。在中文环境中,小写的人民币金额通常用于日常计算和书写,而大写则是为了增强金额表述的清晰度,避免因数字...

    java做的人民币转换的程序。

    这是我做的一个人民币转换程序,就是把数字转换成大写的,因为考虑的比较全面,所以代码有点多,不过,功能绝对全。没有bug 我是冰哥!

    将人民币转换为阿拉伯数字

    使用java编程实现将人民币大写转换为阿拉伯数字。本程序仅实现万元以下的人民币转换,输入数据必须以元结尾。

    类的编写和使用三个案例 :1 判断三角形并求面积 2 求N次方幂的类 3 人民币转换大写

    3. 人民币转换大写。 ### 1. 判断三角形并求面积 #### 类定义 首先定义一个名为`Triangle`的类,该类用于判断三个边长是否可以构成三角形,并计算该三角形的面积。 ```java public class Triangle { // 定义三个...

    人民币转换程序 大小写转换

    这个“人民币转换程序”就是为了解决这样的问题而设计的。 程序的核心功能是将输入的数字(可能是小写或阿拉伯数字)转化为规范的中文大写数字。在人民币的书写规则中,大写数字包括壹、贰、叁、肆、伍、陆、柒、捌...

    Rmb.rar_人民币 转换 java_人民币大写

    这个"Rmb.rar_人民币 转换 java_人民币大写"的压缩包就是一个典型的例子,它包含了一个Java程序,用于将数字转换成符合中国金融规范的人民币大写形式。这种转换对于财务报表、发票开具等场景至关重要,因为它们要求...

    小写人民币转换成大写人民币

    ### 小写人民币转换成大写人民币 在财务、会计以及正式文件中,为了防止篡改,经常需要将小写的阿拉伯数字金额转换为大写形式。这种转换在银行支票填写、合同金额书写等方面尤为常见。本文将详细介绍如何实现从小写...

    c#写的小写人民币转换成大写人民币

    根据提供的文件信息,本文将详细解释...综上所述,虽然提供的代码片段存在一些问题,但通过对原理的理解和适当的修改,可以成功实现小写到大写的人民币转换功能。这对于开发财务系统或其他涉及货币处理的应用非常有用。

    人民币转换为大写包含负数

    本话题聚焦于“人民币转换为大写”,并且要考虑负数和保留两位小数的情况。在处理这样的需求时,开发者需要熟悉中国的货币表示规则以及相关的编程技巧。 首先,人民币的数字表示分为小写和大写两种形式。小写是常规...

    Excel中人民币转换为大写

    ### Excel中人民币转换为大写 #### 知识点概览 本文主要介绍如何在Excel中将阿拉伯数字表示的人民币金额自动转换成大写形式。该功能在制作财务报表、发票或其他需要大写金额的文档时非常实用。通过使用Excel公式...

    人民币转换为大写

    人民币转换为大写

    C#人民币转换操作

    人民币转换操作,人民币大小写转换操作 好用

    EXCEL电子表格小写人民币转换成大写知识.pdf

    在Excel电子表格中,将小写人民币转换成大写是一项常见的财务操作,特别是在编制财务报表或填写支票时。以下是一些关于如何在Excel中实现这一转换的关键知识点: 1. **推荐公式1**: 这个公式首先检查数值是否为...

    人民币转换问题 c++ 程序设计方法学

    人民币转换问题 c++ 程序设计方法学 输入一串数字,转化成大写的人民币数字

    java人民币转换美元的实验报告.pdf

    设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果。本实验使用了JAVA SWING中的容器、部件、布局管理器和部件事件处理方法,通过编写和调试程序,掌握了JAVA...

    人民币转换成美元直接输入人们币即可转换成美元

    可将人民币转换成美元,直接输入人们币,点击转换,即可转换成美元

    JS人民币转换大小写人民币大小写转换

    在JavaScript(JS)编程中,有时我们需要将数字格式的人民币金额转换为中文大写的表示方式,这在财务系统或者电商平台上十分常见。人民币大写转换主要用于财务报表、发票和银行单据,确保金额的准确性和规范化。下面...

    C#人民币转换帮助类RMB.cs

    C#人民币转换帮助类

    mysq 人民币转换为大写

    根据提供的文件信息,本文将详细解释如何在MySQL中创建一个函数来实现人民币金额转换成大写数字的功能。此功能在财务系统中非常实用,尤其是在处理发票、账单等需要正式金额表述的场合。 ### MySQL人民币金额转大写...

Global site tag (gtag.js) - Google Analytics