【 转载请注明出处】:https://blog.csdn.net/Csongxuan/article/details/81706968 

最近写了一个项目,需要把数字转换成英文写法,网上找了一些代码,都不是很满意。就自己想着自己写一个,参考了网上的一些想法。基本上可以实现所有数字的的英文转换(包含两位小数)。

* 小数超过两位,返回原数据,不进行转换)  >> 如有不正确的地方,欢迎指正。

1. 调用方法:

var result = $(txtNum).val().toEnglish();

示例:

<body><input type="text" value="" id="txtNum"><input type="button" id="btnfan" value="翻译" onclick="fnayi()"><br /><label id="convertResult"></label><script src="Test.js"></script><script>function fnayi(){var result = document.getElementById('txtNum').value.toEnglish();document.getElementById('convertResult').innerText = result;}</script>
</body>

2.压缩加密版JS

eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[4-8bce-hj-mo-rt-zA-E]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(j(s){c f={},n="",o="",r="",w=/^([0-9]{1,}([.][0-9]*)?)$/;f.e={k:["zero","one","two","three","four","five","six","seven","eight","nine"],x:["ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"],y:["twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"],t:["hundred","thousand","million","billion","trillion","quadrillion"]};f.u=j(n){try{c 7=5.z(n).p(\',\');4="";for(c i=0;i<7.8;i++){6(7[i].8==3){4+=5.e.k[7[i].v(0,1)]+" ";4+=5.e.t[0];6(5.q(7[i].v(1))!=""){4+=" and "+5.q(7[i].v(1))}}l 6(7[i].8==2){4+=5.q(7[i])}l 6(7[i].8==1){4+=5.e.k[7[i]]}6(i<7.8-1){4+=" "+5.e.t[7.8-1-i]+" "}}g 4}catch(A){console.error(A)}};f.B=j(n){c d=n.p(\'\');c 4=\'\';6(d.8>0){d.forEach(a=>{4+=5.u(a)+" "})}g 4};f.q=j(n){c 4="";6(C(n)!=0){c h=n.p(\'\');6(h[0]<1){4=5.e.k[h[1]]}l 6(h[0]==1){4=5.e.x[h[1]]}l{4=5.e.y[h[0]-2]+"-"+5.e.k[h[1]]}}g 4};f.z=j(b){c b=(b||0).D(),4=\'\';while(b.8>3){4=\',\'+b.E(-3)+4;b=b.E(0,b.8-3)}6(b){4=b+4}g 4};s.prototype.toEnglish=j(){n=5;6(!w.test(C(n))){g"Error:Must in digital format"}c m=n.D().p(\'.\'),r=f.u(m[0]);6(m.8==2){6(m[1].8<=2){o=f.B(m[1])}l{g n}}g r+(o==""?"":" point "+o)}})(String)',[],41,'||||result|this|if|fenge|length|||num|var||tally|NumtoEnglish|return|dd||function|arr1|else|NumList||xiao|split|doubledight|zheng||arr4|Convert_integer|substring|regxinteger|arr2|arr3|toThousands|ex|Convert_decimal|parseInt|toString|slice'.split('|'),0,{}))

3. js源码,请自行加入项目工具类,或保存为独立的Js文件,引入项目后,即可直接调用 xx.toEnglish() 使用。

(function (s) {//参数var NumtoEnglish = {},n = "",xiao = "",zheng = "",regxinteger = /^([0-9]{1,}([.][0-9]*)?)$/;//数字英文写法NumtoEnglish.tally = {arr1: ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"],arr2: ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"],arr3: ["twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"],arr4: ["hundred", "thousand", "million", "billion", "trillion", "quadrillion"]}//转换整数部分NumtoEnglish.Convert_integer = function (n) {try {var fenge = this.toThousands(n).split(',');result = "";for (var i = 0; i < fenge.length; i++) {if (fenge[i].length == 3) {result += this.tally.arr1[fenge[i].substring(0, 1)] + " "; //百位result += this.tally.arr4[0];if (this.doubledight(fenge[i].substring(1)) != "") {result += " and " + this.doubledight(fenge[i].substring(1));}} else if (fenge[i].length == 2) {result += this.doubledight(fenge[i]) //十位} else if (fenge[i].length == 1) {result += this.tally.arr1[fenge[i]]; //个位}//添加千分位单位(数字超过1000,每三位数字分配一个单位)if (i < fenge.length - 1) {result += " " + this.tally.arr4[fenge.length - 1 - i] + " ";}}return result;} catch (ex) {console.error(ex);}}//转换小数部分NumtoEnglish.Convert_decimal = function (n) {var d = n.split('');var result = '';if (d.length > 0) {for(let i=0;i<d.length;i++){result += this.Convert_integer(d[i]) + " ";}//d.forEach(a => {//   result += this.Convert_integer(a) + " ";//});}return result;}//组合两位数NumtoEnglish.doubledight = function (n) {var result = "";if (parseInt(n) != 0) {var dd = n.split('');if (dd[0] < 1) {result = this.tally.arr1[dd[1]];} else if (dd[0] == 1) {result = this.tally.arr2[dd[1]];} else {result = this.tally.arr3[dd[0] - 2] + "-" + this.tally.arr1[dd[1]];}}return result;}//转换千分位显示,例:1000000 = 1,000,000NumtoEnglish.toThousands = function (num) {var num = (num || 0).toString(),result = '';while (num.length > 3) {result = ',' + num.slice(-3) + result;num = num.slice(0, num.length - 3);}if (num) {result = num + result;}return result;}//扩展String方法s.prototype.toEnglish = function () {n = this;if (!regxinteger.test(parseInt(n))) {return "Error:Must in digital format";}//分割整数和小数(如果有小数的话)var NumList = n.toString().split('.'),zheng = NumtoEnglish.Convert_integer(NumList[0]); //整数部分//如果分割长度是2,说明是小数if (NumList.length == 2) {if (NumList[1].length <= 2) {xiao = NumtoEnglish.Convert_decimal(NumList[1]);} else {//如果小数超过2位,不转换,返回原数据return n;}}//返回转换结果return zheng + (xiao == "" ? "" : " point " + xiao);}
})(String)

【 转载请注明出处】:https://blog.csdn.net/Csongxuan/article/details/81706968

【原创】JS 数字转换成英文写法(包含小数)相关推荐

  1. php数字转英文,PHP金额数字转换成英文

    PHP金额数字转换成英文 $numTable[40]="FORTY "; $numTable[50]="FIFTY "; $numTable[60]=" ...

  2. oracle 英文转数字,数字转换成英文

    今天看到一篇帖子,讲述的是如何把数字转换成英文表示.本人觉得不错,将其收入我的经典sql.原文如下: 利用to_timestamp,to_char两个内置函数将范围为(-999999999,99999 ...

  3. 金额数字转换成中文写法

    import java.math.BigDecimal; /** * <p> * Title: 金额数字转换成中文写法 * </p> * <p> * Descrip ...

  4. EXCEL电子表格:将数字转换成英文金额

    在工作中可能用到在EXCEL中输入一个数字,可以自动转换成英文金额标识.EXCEL或WPS通过VBA自定义函数可以实现. 1. 新建Excel表格 2. 按住"AIt+F11"打开 ...

  5. uni-app - javaScript - vue2 将数字转换成英文字母

    1.方法调用 checkNum(num) { //把数字转换为字母console.log(num + "把数字转换为字母");if (typeof(num) == 'number' ...

  6. JS数字转换成货币格式

    2019独角兽企业重金招聘Python工程师标准>>> // Extend the default Number object with a formatMoney() method ...

  7. vue js数字转换成汉字展示

    transToChinese(str) {str = str + '';var len = str.length - 1;var idxs = ['', '十', '百', '千', '万', '十' ...

  8. js 转化为实体符_js字符串转换成数字与数字转换成字符串的实现方法

    本篇文章主要是对js字符串转换成数字与数字转换成字符串的实现方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数. ...

  9. java大数转换成字符串,js字符串转换成数字与数字转换成字符串的实现方法

    摘要:这篇JavaScript栏目下的"js字符串转换成数字与数字转换成字符串的实现方法",介绍的技术点是"js字符串.字符串转换.实现方法.数字转换.字符串.转换&qu ...

  10. JS字符串转换成数字的三种经典方法和代码实例

    1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行: 对其他类 ...

最新文章

  1. cvReleaseImage出错
  2. 汤家凤高等数学基础手写笔记-定积分
  3. RabbitMQ通配符模式
  4. 数据链路层介质访问控制——信道划分、随机访问和轮询访问
  5. 【23】蔡高厅老师 - 高等数学下阅读笔记 - 重积分 - 直角坐标系下(下)23 - 27
  6. 使用Python 3.5/3.6监听本机任意窗口中的按键操作
  7. 嵌入式通过绑定实现双网卡冗余
  8. 小学教师计算机应用培训通讯稿,暑期培训通讯稿
  9. C#将子窗体填充到父窗体的panel中
  10. android程序root权限,android应用程序中应用root权限
  11. win11如何进行bug反馈 windows11进行bug反馈的步骤方法
  12. UVA10882 Koerner's Pub【数学】
  13. STorM32三轴云台控制器PID参数调节(1)
  14. LaiCode 376. Ascending Triple I
  15. 数电课程设计数字钟c语言编程,数电数字钟设计,含源码
  16. 2011新版车主宝典改进亲体验(Android版)
  17. 物料-贴片电容-标签识别
  18. Java+Swing+MySQL机票预订和管理系统
  19. win7下搭载ubuntu双系统,独立引导
  20. 宝塔Linux面板安装教程

热门文章

  1. 快手如何通过算法和算力支撑用户的增长
  2. 一文搞懂MySQL索引(清晰明了)
  3. 《计算机应用基础》在线考核,2019年秋季考试《计算机应用基础》在线考核试题 在Excel 2010中为了取消分类汇总的操作必须...
  4. android inflate 方法,Android LayoutInflater中 Inflate()方法应用
  5. 手机处理器天梯图2021
  6. 23种设计模式归纳总结——结构型
  7. kotlin 属性重载
  8. 基于GEE的bfastmonitor的改编
  9. java培训老师面试题_千锋Java培训老师分享Java实习生面试题
  10. 微信公众号怎么发红包?