C#数字转人民币大写

C#方法

废话不多说,直接上代码:

/// <summary>
/// 数字转换为大写人民币表示
/// </summary>
/// <param name="strMoney"></param>        
public string MoneyToChinese(string strCurrentDigit)
{         
            // 1. 字符串切分
            string integral = "";  // 整数部分
            string dec = "";  // 小数部分
            string[] strDigitList = strCurrentDigit.Split(new char[] { '.' });
            if (strDigitList.Length > 1)
            {
                integral = strDigitList[0];
                dec = strDigitList[1];
            }
            else

            {
                integral = strDigitList[0];
                dec = "";
            }

            // 2. 数据准备         
            string[] radices = {"","拾", "佰", "仟"};
            string[] bigRadices = {"","万","亿"};
            string[] decimals = {"角","分"};
            string CN_DOLLAR = "元";
            string CN_SYMBOL = "";  // 人民币
            string CN_INTEGER = "整";

            string d = "";
            string outputCharacters = "";
            int zeroCount = 0;
            int p = 0;
            int quotient = 0;
            int modulus = 0;

            // 3. 整数部分
            if (integral.Length > 0) {
                zeroCount = 0;
                for (int i = 0; i < integral.Length; i++)
                {
                    p = integral.Length - i - 1;
                    d = integral.Substring(i, 1);
                    quotient = p / 4;
                    modulus = p % 4;
                    if (d == "0")
                    {
                        zeroCount++;
                    }
                    else
                    {
                        if (zeroCount > 0)
                        {
                           outputCharacters += "0";
                        }
                        zeroCount = 0;
                        outputCharacters += d + radices[modulus];
                    }
                    if (modulus == 0 && zeroCount < 4)
                    {
                        outputCharacters += bigRadices[quotient];
                    }
                }
                if (!string.IsNullOrEmpty(outputCharacters))
                { outputCharacters += CN_DOLLAR; }
            }
            // 4. 小数部分           
            if (dec != "") {
                for (int i = 0; i < dec.Length; i++) {
                    d = dec.Substring(i, 1);
                    if (d != "0") {
                        outputCharacters += d + decimals[i];
                    }
                }
            }
            // Confirm and return the final output string:
            if (outputCharacters == "") {
                outputCharacters = "0" + CN_DOLLAR;
            }
            if (dec == "") {
                outputCharacters += CN_INTEGER;
            }                       
            return outputCharacters;
}        

javaScript方法

/**
   * 数字转换为人民币大写
   */
  convertCurrency: function(currencyDigits) {
    // Constants: 
    var MAXIMUM_NUMBER = 99999999999.99;
    // Predefine the radix characters and currency symbols for output: 
    var CN_ZERO = "0";
    var CN_ONE = "1";
    var CN_TWO = "2";
    var CN_THREE = "3";
    var CN_FOUR = "4";
    var CN_FIVE = "5";
    var CN_SIX = "6";
    var CN_SEVEN = "7";
    var CN_EIGHT = "8";
    var CN_NINE = "9";
    var CN_TEN = "十";
    var CN_HUNDRED = "佰";
    var CN_THOUSAND = "仟";
    var CN_TEN_THOUSAND = "万";
    var CN_HUNDRED_MILLION = "亿";    
    var CN_DOLLAR = "元";
    var CN_TEN_CENT = "角";
    var CN_CENT = "分";
    var CN_INTEGER = "整";

    // Variables: 
    var integral; // Represent integral part of digit number. 
    var decimal; // Represent decimal part of digit number. 
    var outputCharacters; // The output result. 
    var parts;
    var digits, radices, bigRadices, decimals;
    var zeroCount;
    var i, p, d;
    var quotient, modulus;

    // Validate input string: 
    currencyDigits = currencyDigits.toString();
    if (currencyDigits == "") {
      alert("请输入小写金额!");
      return "";
    }
    if (currencyDigits.match(/[^,.\d]/) != null) {
      alert("小写金额含有无效字符!");
      return "";
    }
    if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
      alert("小写金额的格式不正确!");
      return "";
    }

    // Normalize the format of input digits: 
    currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters. 
    currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning. 
    // Assert the number is not greater than the maximum number. 
    if (Number(currencyDigits) > MAXIMUM_NUMBER) {
      alert("金额过大,应小于1000亿元!");
      return "";
    }

    // Process the coversion from currency digits to characters: 
    // Separate integral and decimal parts before processing coversion: 
    parts = currencyDigits.split(".");
    if (parts.length > 1) {
      integral = parts[0];
      decimal = parts[1];
      // Cut down redundant decimal digits that are after the second. 
      decimal = decimal.substr(0, 2);
    } else {
      integral = parts[0];
      decimal = "";
    }
    // Prepare the characters corresponding to the digits: 
    digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
    radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
    bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
    decimals = new Array(CN_TEN_CENT, CN_CENT);
    // Start processing: 
    outputCharacters = "";
    // Process integral part if it is larger than 0: 
    if (Number(integral) > 0) {
      zeroCount = 0;
      for (i = 0; i < integral.length; i++) {
        p = integral.length - i - 1;
        d = integral.substr(i, 1);
        quotient = p / 4;
        modulus = p % 4;
        if (d == "0") {
          zeroCount++;
        } else {
          if (zeroCount > 0) {
            outputCharacters += digits[0];
          }
          zeroCount = 0;
          outputCharacters += digits[Number(d)] + radices[modulus];
        }
        if (modulus == 0 && zeroCount < 4) {
          outputCharacters += bigRadices[quotient];
          zeroCount = 0;
        }
      }
      outputCharacters += CN_DOLLAR;
    }
    // Process decimal part if there is: 
    if (decimal != "") {
      for (i = 0; i < decimal.length; i++) {
        d = decimal.substr(i, 1);
        if (d != "0") {
          outputCharacters += digits[Number(d)] + decimals[i];
        }
      }
    }
    // Confirm and return the final output string: 
    if (outputCharacters == "") {
      outputCharacters = CN_ZERO + CN_DOLLAR;
    }
    if (decimal == "") {
      outputCharacters += CN_INTEGER;
    }
    return outputCharacters;
  },

猜你喜欢

转载自blog.csdn.net/Simoral/article/details/80411583