JS实现将数字金额转换为大写人民币汉字

function convertCurrency(money) {
  //汉字的数字
  var cnNums = new Array(‘零‘, ‘壹‘, ‘贰‘, ‘叁‘, ‘肆‘, ‘伍‘, ‘陆‘, ‘柒‘, ‘捌‘, ‘玖‘);
  //基本单位
  var cnIntRadice = new Array(‘‘, ‘拾‘, ‘佰‘, ‘仟‘);
  //对应整数部分扩展单位
  var cnIntUnits = new Array(‘‘, ‘万‘, ‘亿‘, ‘兆‘);
  //对应小数部分单位
  var cnDecUnits = new Array(‘角‘, ‘分‘, ‘毫‘, ‘厘‘);
  //整数金额时后面跟的字符
  var cnInteger = ‘整‘;
  //整型完以后的单位
  var cnIntLast = ‘元‘;
  //最大处理的数字
  var maxNum = 999999999999999.9999;
  //金额整数部分
  var integerNum;
  //金额小数部分
  var decimalNum;
  //输出的中文金额字符串
  var chineseStr = ‘‘;
  //分离金额后用的数组,预定义
  var parts;
  if (money == ‘‘) { return ‘‘; }
  money = parseFloat(money);
  if (money >= maxNum) {
    //超出最大处理数字
    return ‘‘;
  }
  if (money == 0) {
    chineseStr = cnNums[0] + cnIntLast + cnInteger;
    return chineseStr;
  }
  //转换为字符串
  money = money.toString();
  if (money.indexOf(‘.‘) == -1) {
    integerNum = money;
    decimalNum = ‘‘;
  } else {
    parts = money.split(‘.‘);
    integerNum = parts[0];
    decimalNum = parts[1].substr(0, 4);
  }
  //获取整型部分转换
  if (parseInt(integerNum, 10) > 0) {
    var zeroCount = 0;
    var IntLen = integerNum.length;
    for (var i = 0; i < IntLen; i++) {
      var n = integerNum.substr(i, 1);
      var p = IntLen - i - 1;
      var q = p / 4;
      var m = p % 4;
      if (n == ‘0‘) {
        zeroCount++;
      } else {
        if (zeroCount > 0) {
          chineseStr += cnNums[0];
        }
        //归零
        zeroCount = 0;
        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
      }
      if (m == 0 && zeroCount < 4) {
        chineseStr += cnIntUnits[q];
      }
    }
    chineseStr += cnIntLast;
  }
  //小数部分
  if (decimalNum != ‘‘) {
    var decLen = decimalNum.length;
    for (var i = 0; i < decLen; i++) {
      var n = decimalNum.substr(i, 1);
      if (n != ‘0‘) {
        chineseStr += cnNums[Number(n)] + cnDecUnits[i];
      }
    }
  }
  if (chineseStr == ‘‘) {
    chineseStr += cnNums[0] + cnIntLast + cnInteger;
  } else if (decimalNum == ‘‘) {
    chineseStr += cnInteger;
  }
  return chineseStr;
}

原文地址:https://www.cnblogs.com/Super-scarlett/p/10559332.html

时间: 2024-10-13 22:58:56

JS实现将数字金额转换为大写人民币汉字的相关文章

数字金额转换大写人民币

using System;using System.Collections.Generic;using System.Text; namespace PublicClass{    /// <summary>    /// Copyright(c) 2008~2011 KingBoy Software Co.,Ltd    /// FileName:大写人民币类    /// Author:KingBoy  Version:1.0.0.0  Date:2009-3-05    /// Desc

Oracle 小写金额转换为大写

在开发EBS的合同报表打印的时候需要将小写金额转换为大写. 如下是本人自己写的转换函数. 主要思路:先获取小数点位置,在区分整数与小数点处理,根据位数和数字组合读取金额. 最后再处理特殊显示部分. /******************************************************************* *  FUNCTION get_big_amount 数字金额转换为大写 *  p_amount 输入数据金额 *  返回大写金额,位数 :千亿----厘 ****

C#:小写金额转换为大写

#region 小写金额转换为大写 public static string CurrToChnNum(double Currnum) { string sResult = ""; if (Math.Abs(Currnum) < 1e-20) return "零圆整"; if (Currnum < 1e-20) sResult = "负"; sResult = sResult + StringToChnNum(Math.Abs(Mat

js将人民币金额转换为大写

function upDigit(n) { var fraction = ['角', '分']; var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var head = n < 0? '欠': ''; n = Math.abs(n); var s = ''; for (var i = 0; i < fractio

SSRS 实现数字金额转换为中文大写汉字

比如: 金额=49,701,120.00,将其转换为"肆仟玖佰柒拾万壹仟壹佰贰拾元整":金额 289,546.52 ,转换为 "贰拾捌万玖仟伍佰肆拾陆元伍角贰分". 解决方法:添加VB的转换函数写在CODE里,然后在表达式里调用自定义函数转换. 如:增加两个占位符表达式,如小数位为0时表达式2添加"整", 表达式1=Code.GetCnString(Fields!Amount.Value) 表达式2=IIF(Fields!Amount.Value

数字金额转大写汉字

function changeMoneyToChinese(money) { var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字 var cnIntRadice = new Array("

numberToCapital() JavaScript数字金额转换为大写金额

function numberToCapital(number) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(number)) { return "数字格式不正确!" } // 如果有小数,截取整数位和小数位 number += '00'; var pointIndex = number.indexOf('.'); if (pointIndex > -1) { number = number.substring(0, pointIndex) + nu

java将小写金额转换为大写的工具类

public class Tool {             private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分";         private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖";         private static final double MAX_VALUE = 9999999999999.99D;         public static St

PHP数字金额转换大写金额

早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下.金额转换的函数方法有很多,都很不错.不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义.如有问题请朋友们指出,小崔及时修正.谢谢啦! 废话不多说直接上代码: 1 <?php 2 3 /** 4 * 数字金额转换大写数字 5 * $num 数字类型 6 */ 7 8 function inttodaxie($num) { 9 //判断$num是否数字 10 if(!is_numeric($num)) return -