Vue.js阿拉伯数字转化成人民币的中文

本文介绍了一个将数字金额转换为人民币中文表示的JavaScript函数。通过该函数可以将任意数字金额(最高到兆)转换为标准的人民币中文大写形式,适用于财务系统中金额的显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 数字金额转化成人民币的中文
export function numberToChinese(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;
}

### Vue2 实现阿拉伯数字换为中文的方法 为了在Vue2项目中实现将阿拉伯数字换为中文的功能,可以通过创建一个自定义过滤器或方法来完成此操作。以下是两种不同的方式: #### 方式一:使用自定义过滤器 可以在Vue实例内注册一个全局过滤器`toChineseNumber`,用于处理数字到汉字的换。 ```javascript // 定义全局过滤器 toChineseNumber Vue.filter('toChineseNumber', function (value) { let cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; let cnIntRadice = ['', '拾', '佰', '仟']; let cnIntUnits = ['', '万', '亿', '兆']; let cnDecUnits = ['角', '分', '厘']; let intPartPattern = /^(-)?\d+(\.\d+)?$/; value += ''; if (!intPartPattern.test(value)) return ''; var parts = String(value).split("."); var result = ""; // 整数部分 for(var i=0;i<parts[0].length;i++){ var num = parseInt(parts[0][i]); if(i != parts[0].length-1 && num!=0){ result+=cnNums[num]+cnIntRadice[i%4]; }else{ result+=cnNums[num]; } } // 小数部分 if(parts.length>1){ for(let j=0;j<Math.min(3,parts[1].length);j++){ result+=cnNums[parsInt(parts[1][j])]+cnDecUnits[j]; } } return result.trim(); }); ``` 然后,在模板里可以直接应用这个过滤器[^1]。 ```html <p>{{ number | toChineseNumber }}</p> ``` #### 方式二:利用第三方库 `nzh/cn` 另一种更简便的做法是引入专门用来做金额大小写换的JavaScript库——`nzh/cn`。安装并导入该库之后,就可以轻松地把任何整型数值化为标准的大写人民币表示形式。 首先需要安装依赖包: ```bash npm install nzh --save ``` 接着修改组件代码如下所示[^2]: ```javascript import nzh from 'nzh'; export default { data() { return { number: 123456789, }; }, methods: { convertToChinese() { const chineseNumber = nzh.cn.toMoney(this.number); console.log(chineseNumber); // 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整 }, }, }; ``` 这种方式不仅简单易懂而且准确性更高,特别适合于金融类应用场景下的金额显示需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值