js实现万级数字转汉字显示

场景描述

完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五。

思路解析: – 零到九的汉字索引数组 – 个十百千万的计量单位 – 数字转为字符串解析,每个十进制有单独的数字表示 – 对零的处理,重复多个零只读一个,后面无数字的省略零 – 对超出万计量的重新按照千百十的计量

const toChineseNum = (num) => {
  let dtext=['','十','百','千','万']
  let len=num.toString().length
  let numArr=num.toString().split('')
  let numTxt=''
  const toT=(numIndex)=>{
    const arr=['零','一','二','三','四','五','六','七','八','九']
    return arr[numIndex]
  }
  for(let i=1;i<=len;i++){
    if(len>5&&i<(len-3)){
      if(i==(len-4)){
          numTxt+=numArr[i-1]==0?'':toT(numArr[i-1])
          numTxt+='万'
      }else{
        if((numArr[i-2]==0&&numArr[i-1]==0)||((numArr[i-1]==0)&&(numArr[len-5]==0)&&numArr[i]==0)){
          numTxt+=''
        }else{
          numTxt+=(((numArr[i-1]==0)&&(numArr[len-5]!=0))||(numArr[i]!=0&&numArr[i-1]==0))?'零':(toT(numArr[i-1])+dtext[len-i-4])
      }
    }}else{
      if((numArr[i-1]==0&&i==len)||(numArr[i]==0&&numArr[i-1]==0)){
        numTxt+=''
      }else{
        numTxt+=numArr[i-1]==0?'零':(toT(numArr[i-1])+dtext[len-i])
      }
  }}
  return numTxt
}

codepen地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

十分钟掌握Keras实现RNN的seq2seq学习

1404
来自专栏ml

python科学计算之numpy

1.np.logspace(start,stop,num): 函数表示的意思是;在(start,stop)间生成等比数列num个 eg:  import num...

3696
来自专栏数据结构与算法

02:奇数单增序列 个人博客doubleq.win

 个人博客doubleq.win 02:奇数单增序列 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 给定一个长度为N(不...

3298
来自专栏null的专栏

TensorFlow入门——Softmax Regression

下面的代码是利用TensorFlow实现的Softmax Regression的基本过程: ''' @author:zhaozhiyong @date:2017...

2775
来自专栏林德熙的博客

C# 判断两条直线距离

d= \frac{ \left| C_1-C_2 \right|}{\sqrt{A^2+B^2}}

1162
来自专栏数据结构与算法

1099 字串变换 2002年NOIP全国联赛提高组

1099 字串变换 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 D...

2573
来自专栏数说工作室

函数玩一玩 | 【SAS Says·扩展篇】IML:2.函数

【SAS Says·扩展篇】IML 分6集,回复【SASIML】查看全部: 入门 | SAS里的平行世界 函数 | 函数玩一玩 编程 | IML的条件与循环 模...

3769
来自专栏WeaponZhi

使用Octave来学习Machine Learning(二)

前言 上一篇我们介绍了 Octave 的一些基本情况,大家对 Octave 应该已经有了一个基本的了解,我相信看这篇文章的朋友已经在自己的电脑中安装好 Ocat...

3516
来自专栏数据结构与算法

洛谷P2503 [HAOI2006]均分数据(模拟退火)

1870
来自专栏bboysoul

1167: C语言实验题――分数序列

描述:有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。 输入:输入只有一个正整数n,1≤n≤10。 ...

923

扫码关注云+社区