金额数字 转中文大写

本文介绍了将金额数字转换为中文大写的三种方法,包括各自的特点和适用情况。方法一和方法二存在相同的问题,而方法三是最完整但代码量大的解决方案。如果能改进方法一的不足,它将是代码最简洁且实用的选择。
摘要由CSDN通过智能技术生成

金额数字 转中文大写 有三种办法:

//方法一: 代码最少:
export function DX1(n) {
   

  if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n))
    return "数据非法";
  var unit = "仟佰拾亿仟佰拾万仟佰拾元角分", str = "";
  n += "00";
  var p = n.indexOf('.');
  if (p >= 0)
    n = n.substring(0, p) + n.substr(p + 1, 2);
  unit = unit.substr(unit.length - n.length);

  for (var i = 0; i < n.length; i++)
    str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
  return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
}

//缺点: 如果是10.02 会显示的是拾元零贰分,  没有零角 改法 有可能是 一下代码 但是我自己没实验过,这是根据方法三突然想起来的改法
 return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "零").replace(/元$/g, "元整");

方法二 : 和方法一存在同样的问题:

export function DX2(dValue) {
   
  var maxDec = 2;
  // 验证输入金额数值或数值字符串:
  dValue = dValue.toString().replace(/,/g, "");
  dValue = dValue.replace(/^0+/, ""); // 金额数值转字符、移除逗号、移除前导零
  if (dValue == "") {
   
    return "零元整";
  } // (错误:金额为空!)
  else if (isNaN(dValue)) {
   
    return "错误:金额不是合法的数值!";
  }
  var minus = ""; // 负数的符号"-"的大写:"负"字。可自定义字符,如"(负)"。
  var CN_SYMBOL = ""; // 币种名称(如"人民币",默认空)
  if (dValue.length > 1) {
   
    if (dValue.indexOf('-'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值