javascript - 将数字转换为单词

标签 javascript numbers number-formatting

我从 Stackoverflow 获取了这段代码并对其进行了修改,但我无法转换超过 3 位的数字。

这是代码:

var num = this.rawValue;
var a = ['','one ','two ','three ','four ', 'five ','six ','seven ','eight ','nine ','ten ','eleven ','twelve ', 'thirteen  ','fourteen ','fifteen ','sixteen ','seventeen ','eighteen ','nineteen '];
var b = ['', '', 'twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety'];
var c = ['thousand', 'million', ''];

num = num.toString();

num = ( '000000000' + num ).substr( -9 ); // // Make number into a predictiable nine character string
num = num.match( /.{3}/g ); // Split string into chuncks of three numbers then reverse order of returned array

var words = '';

for( var i = 0; i < c.length; i++ ) {

    var n = num[i];
    var str = '';
    str += ( words != '' ) ? ' ' + c[i] + ' ' : '';
    str += ( n[0] != 0 ) ? ( a[Number( n[0] )] + 'hundred ' ) : '';
    n = n.substr( 1 );
    str += ( n != 0 ) ? ( ( str != '' ) ? 'and ' : '' ) + ( a[Number( n )] || b[n[0]] + ' ' + a[n[1]] ) : '';
    words += str;

}

data.Text.TextField1.rawValue= words;

我想将数字转换为超过 3 位数字的单词,并考虑小数值。

当前代码最多可转换千位,并将小数点之前的值解释为未定义。上面的代码是在adobe形式(sap)下的javascript中使用的。

最佳答案

for循环中将c[i]替换为c[c.length-1-i]。这对我有用。我刚刚发现为数组 c 指定的索引给出了错误的结果,因为它的方向有点错误。

我确信这也可以通过其他方式进行优化。

JSFiddle for testing and experimenting .

关于javascript - 将数字转换为单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29405690/

相关文章:

javascript - 如何在jquery中将价格格式字符串转换为数字

javascript - jQGrid,如何在网格内添加新行,而不是通过模态?

javascript - 从 Javascript 结果中 trim 特定数字

java - 系列中最大的产品(java)

c++ - Qt rand() 不能正常工作

java - Android:将欧盟货币解析为数字

javascript - 如何在 JavaScript 中四舍五入数百万?

javascript - 使用jquery取消确认后如何防止更改选择选项?

javascript - 本地存储可观察服务上的主题切换器

javascript - 更新数组值的选择