我从 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
指定的索引给出了错误的结果,因为它的方向有点错误。
我确信这也可以通过其他方式进行优化。
关于javascript - 将数字转换为单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29405690/