在文章的开头,推荐一下我最近刚发布的npm小工具:里面包含了将数字转为汉字的方法, 添加了对金额的支持,并添加了对边界条件的控制。

https://www.npmjs.com/package/lidashi-tools

安装方法:npm   install   lidashi-tools

使用方法:import  util  from  'lidashi-tools'

util.transformNumber2CN(90071992547444, false, true)

输出:玖拾万亿零柒佰壹拾玖亿玖仟贰佰伍拾肆万柒仟肆佰肆拾肆元整

//js实现将数字1234转化为汉字字符串(一千二百三十四)(或大写汉字壹仟贰佰叁拾肆);

/*阿拉伯数字转中文数字 中文数字的特点: 每个计数数字都跟着一个权位,权位有:十、百、千、万、亿。 以“万”为小节,对应一个节权位,万以下没有节权位。 每个小节内部以“十百千”为权位独立计数。 “十百千”不能连续出现,而“万”和“亿”作为节权位时可以和其他权位连用,如:“二十亿”。 中文数字对“零”的使用要满足以下三条规则: 以10000为小节,小节的结尾即使是0,也不使用零。 小节内两个非0数字之间要使用“零”。 当小节的“千”位是0时(即:1~999),只要不是首小节,都要补“零”。 算法设计的一些说明: 对“零”的第三个规则,把检测放在循环的最前面并默认为false,可以自然的丢弃最高小节的加零判断。 单个数字转换用数组实现,var chnNumChar = ["零","一","二","三","四","五","六","七","八","九"]; 节权位同样用数组实现,var chnUnitSection = ["","万","亿","万亿","亿亿"]; 节内权位同样用数组实现,var chnUnitChar = ["","十","百","千"];*/

注意: 下面的方法只针对1亿亿以下数字有效,因为在日常项目中,一亿亿已经是非常大的数字,基本上达不到这个量

  1. //如果数字含有小数部分,那么可以将小数部分单独取出
  2. //将小数部分的数字转换为字符串的方法:
  3.  
  4. var chnNumChar = ["零","一","二","三","四","五","六","七","八","九"];
  5. var chnUnitSection = ["","万","亿","万亿","亿亿"];
  6. var chnUnitChar = ["","十","百","千"];
  7.  
  8. var numToChn = function(num){
  9. var index = num.toString().indexOf(".");
  10. if(index != -1){
  11. var str = num.toString().slice(index);
  12. var a = "点";
  13. for(var i=1;i<str.length;i++){
  14. a += chnNumChar[parseInt(str[i])];
  15. }
  16. return a ;
  17. }else{
  18. return '';
  19. }
  20. }
  21.  
  22. //定义在每个小节的内部进行转化的方法,其他部分则与小节内部转化方法相同
  23. function sectionToChinese(section){
  24. var str = '', chnstr = '',zero= false,count=0; //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
  25. while(section>0){
  26. var v = section % 10; //对数字取余10,得到的数即为个位数
  27. if(v ==0){ //如果数字为零,则对字符串进行补零
  28. if(zero){
  29. zero = false; //如果遇到连续多次取余都是0,那么只需补一个零即可
  30. chnstr = chnNumChar[v] + chnstr;
  31. }
  32. }else{
  33. zero = true; //第一次取余之后,如果再次取余为零,则需要补零
  34. str = chnNumChar[v];
  35. str += chnUnitChar[count];
  36. chnstr = str + chnstr;
  37. }
  38. count++;
  39. section = Math.floor(section/10);
  40. }
  41. return chnstr;
  42. }
  43.  
  44. //定义整个数字全部转换的方法,需要依次对数字进行10000为单位的取余,然后分成小节,按小节计算,当每个小节的数不足1000时,则需要进行补零
  45.  
  46. function TransformToChinese(num){
  47. var a = numToChn(num);
  48. num = Math.floor(num);
  49. var unitPos = 0;
  50. var strIns = '', chnStr = '';
  51. var needZero = false;
  52.  
  53. if(num === 0){
  54. return chnNumChar[0];
  55. }
  56. while(num > 0){
  57. var section = num % 10000;
  58. if(needZero){
  59. chnStr = chnNumChar[0] + chnStr;
  60. }
  61. strIns = sectionToChinese(section);
  62. strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0];
  63. chnStr = strIns + chnStr;
  64. needZero = (section < 1000) && (section > 0);
  65. num = Math.floor(num / 10000);
  66. unitPos++;
  67. }
  68.  
  69. return chnStr+a;
  70. }
  71.  
  72. TransformToChinese(12339492835.99302);
  73. //输出 "一百二十三亿三千九百四十九万二千八百三十五点九九三零二"

Javascript中将数字转换为中文的方法的更多相关文章

  1. C语言中将数字转换为字符串的方法

    C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <stdio. h># ...

  2. Postgresql/Greenplum中将数字转换为字符串TO_CHAR函数前面会多出一个空格

    -- 问题1..Postgresql中将数字转换为字符串前面多出一个空格. SELECT TO_CHAR(, '); -- 解决1.使用如下,参数二前面加上fm就可以去掉空格了,如下: SELECT ...

  3. JavaScript将数字转换为大写金额

    用JavaScript将数字转换为大写金额,好了 0.0 To code! var digitUppercase = function(n) { var fraction = ['角', '分']; ...

  4. django中将model转换为dict的方法

    django中将model转换为dict的方法 from django.forms.models import model_to_dict from user.model import userpro ...

  5. JS将数字转换为中文

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. JavaScript 转换数字为整数的方法

    本文将会列举并说明JavaScript 把一个number(或者numerical的对象)转换成一个整数相关方法. 使用parseInt parseInt的语法如下:parseInt(string, ...

  7. c++ 实现将数字转换为中文数字输出

    实现如下函数: void printInChinese(int num); 这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法. 例如: 17 -> 一十七 ...

  8. Java中将对象转换为Map的方法

    将对象转换为Map的方法,代码如下: /** * 将对象转成TreeMap,属性名为key,属性值为value * @param object 对象 * @return * @throws Illeg ...

  9. JavaScript非数字(中文)排序

    直接上代码: var arr=[ {name:"张散步",age:"23",sports:"篮球",number:"231123& ...

随机推荐

  1. centos7 添加用户,组

    centos7添加用户,组. groupadd projectUsers //添加组,组名projectUser. cat /etc/group //查看最后一行是projectUser. 添加用户并 ...

  2. Element-ui DatePicker显示周数

    1.场景描述 我们公司是做电商的,运营的工作指标都是按周来定的,所以他们对周特别敏感,希望我们能在日期选择器上显示周数.刚接到这个需求时,心中很不乐意,因为Element-ui的日期选择器根本不支持显 ...

  3. 实验吧--web--天下武功唯快不破

    ---恢复内容开始--- 英文翻译过来嘛,就是:天下武功无快不破嘛.(出题者还是挺切题的) 看看前端源码: 注意这里 please post what you find with parameter: ...

  4. CentOS下搭建Git服务器(基于SSH协议)

    1,安装Git所需依赖包      # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel      # ...

  5. JVM调优之探索CMS和G1的物理内存归还机制

    前言: 公司有一个资产统计系统,使用频率很低,但是要求在使用时查询速度快,因此想到做一些缓存放在内存中,在长时间没有使用,持久化到磁盘中,并对垃圾进行回收,归还物理内存给操作系统,从而节省宝贵资源给其 ...

  6. SpringBoot第二十二篇:应用监控之Actuator

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11226397.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   很多文章都 ...

  7. VMware里装XP 没有找到硬盘驱动器

    遇到问题: 解决:要给虚拟机配上一个虚拟的硬盘驱动器.在VMWare的虚拟机配置里面给这个虚拟机增加硬盘,选IDE模式,而非SCSI,设定硬盘大小和文件名就可以了.

  8. 02、HTML 基础

    1.HTML 标题 HTML 标题(Heading)是通过<h1> - <h6> 标签来定义的. <!DOCTYPE html> <html> < ...

  9. paddlepaddle实现猫狗分类

    目录 1.预备工作 1.1 数据集准备 1.2 数据预处理 2.训练 2.1 模型 2.2 定义训练 2.3 训练 3.预测 4.参考文献 声明:这是我的个人学习笔记,大佬可以点评,指导,不喜勿喷.实 ...

  10. Git/Github使用方法小记

    今天把人间网的桌面客户端renjian-deck正式开源了,之前对javascript的了解其实非常的不够的,所以这一次的代码写的也是乱七八糟重用性及其低下,虽然我无数次的想把代码重新整理一下,不过还 ...