JAVAScript实现人民币大小写转换算法

大家好,我是梦辛工作室的灵,最近在写一个人民币大小写转换的工具,就把数字转换为大写中文

界面如下:
在这里插入图片描述

这样就很清楚了,做财务软件的时候应该会经常用到:
转换代码如下(是从右向左读):


function numberTurn(value,that){
	var numberToStr = {
	  0:"零",
	  1:"壹",
	  2:"贰",
	  3:"叁",
	  4:"肆",
	  5:"伍",
	  6:"陆",
	  7:"柒",
	  8:"捌",
	  9:"玖",
	}
	var unitToStr = {
	  "-3":"厘",
	  "-2":"分",
	  "-1":"角",
	  0:"",
	  1:"拾",
	  2:"佰",
	  3:"仟",
	  4:"万", 
	  5:"拾万", 
	  6:"佰万", 
	  7:"仟万", 
	  8:"亿", 
	  9:"拾亿", 
	  10:"佰亿",
	  11:"仟亿",  
	  12:"万亿", 
	  13:"拾万亿", 
	  14:"佰万亿",
	  15:"仟万亿",   
	  16:"万万亿", 
	  17:"拾万万亿", 
	  18:"佰万万亿", 
	  19:"仟万万亿", 
	  20:"万万万亿",     
	}
  var result  = [];
  var result2 =  [];
  let fen = (value + "").split(".");
  let integerStr = fen[0].split(""); 
  var len =  integerStr.length - 1;
  var i = 0;
  var lastvalue = -1;
  var lastunit = "";
  for(var x = len;x >= 0;x--){
    if(integerStr[x] != 0){  
      result.push(unitToStr[i].replace(lastunit,""));
      result2.push(unitToStr[i].replace(lastunit,"")); 
      if(unitToStr[i].indexOf("万") >= 0){
        lastunit = "万";
      } 
      if(unitToStr[i].indexOf("亿") >= 0){
        lastunit = "亿";
      } 
      if(unitToStr[i].indexOf("万亿") >= 0){
        lastunit = "万亿";
      } 
    } 
    i++;
    if(lastvalue == 0 && integerStr[x] == 0){
      continue;
    }
    result.push(numberToStr[integerStr[x]]); 
    result2.push(integerStr[x]);
    lastvalue = integerStr[x];
    console.log(result);
  }
  if(result[0] == "零" && result.length > 1){
    result.shift();
  }
  if(result2[0] == "0" && result2.length > 1){
    result2.shift();
  }
  if(fen[1]){
    let floatStr = fen[1];
    var floatResult = []; 
    var floatResult2 = []; 
    for(var x in floatStr){ 
      floatResult.push(numberToStr[floatStr[x]]);
      floatResult.push(unitToStr[(parseInt(x) + 1) * -1]); 
      floatResult2.push(floatStr[x]);
      floatResult2.push(unitToStr[(parseInt(x) + 1) * -1]); 
    } 
    result.reverse();
    result = result.join("") + "元" + floatResult.join(""); 
    result2.reverse();
    result2 = result2.join("") + "元" + floatResult2.join(""); 
  } else {
    result.reverse();
    result = result.join("") + "元整";
    result2.reverse();
    result2 = result2.join("") + "元整";
    console.log(result);
  }
  that.setData({
    number1:result,
    number2:result2
  })
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵神翁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值