【发布时间】:2014-01-13 17:30:53
【问题描述】:
我有一个将数值转换为单词的代码。如果用户输入的金额为美分,我只想在单词中添加美分。
例如。如果我有 1,000.88 的金额。文字中的价值将是仅一千比索和八十八美分。
更新: 编辑代码以拆分整个值和美分值。唯一剩下的就是将美分转化为文字。
var NUMBER2TEXT = {
ones: ['', 'ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE', 'TEN', 'ELEVEN', 'TWELVE', 'THIRTEEN', 'FOURTEEN', 'FIFTEEN', 'SIXTEEN', 'SEVENTEEN', 'EIGHTEEN', 'NINETEEN'],
tens: ['', '', 'TWENTY', 'THIRTY', 'FOURTY', 'FIFTY', 'SIXTY', 'SEVENTY', 'EIGHTY', 'NINETY'],
sep: ['', ' THOUSAND ', ' MILLION ', ' BILLION ', ' TRILLION ', ' QUADRILLION ', ' QUINTILLION ', ' SEXTILLION ']
};
(function( ones, tens, sep ) {
var input = document.getElementById( 'totalamountpaid' ),
output = document.getElementById('words');
input.onkeyup = function() {
var val = this.value,
arr = [],
str = '',
i = 0;
if ( val.length === 0 ) {
output.textContent = 'No amount paid';
return;
}
val = val.replace(/,/g,'');
if ( isNaN( val ) ) {
output.textContent = 'Invalid input.';
return;
}
val = val.toString();
var valArray = val.split('\.', 2); //splits val into two seperate integers, whole numbers and decimals, in an array.
val = valArray[0]; //this is the whole number
var val2 = valArray[1]; //this should be the decimals
if(val2 != null && val2 != ''){
//convert the decimals here
var str2 = 'AND TWENTY CENTS';
}else{
var str2 = '';
}
while ( val ) {
arr.push( val % 1000 );
val = parseInt( val / 1000, 10 );
}
while ( arr.length ) {
str = (function( a ) {
var x = Math.floor( a / 100 ),
y = Math.floor( a / 10 ) % 10,
z = a % 10;
return ( x > 0 ? ones[x] + ' HUNDRED ' : '' ) +
( y >= 2 ? tens[y] + ' ' + ones[z] : ones[10*y + z] );
})( arr.shift() ) + sep[i++] + str;
}
output.textContent = str + ' ' + str2 + ' PESOS ONLY';
};
})( NUMBER2TEXT.ones, NUMBER2TEXT.tens, NUMBER2TEXT.sep );
【问题讨论】:
-
我不明白你的问题是什么,你的想法似乎有一个好的开始。这不会很简单,因为语言不像数字那样合乎逻辑。
-
不知道整数后面要加什么条件,怎么组合。
-
对我来说,最简单的方法是
mystr.split(".");并将它们作为两个单独的变量处理。 .split 函数会将它们放入数组中,你了解数组吗? -
是的,但如果你不介意编辑小提琴让我看看它是如何工作的?
-
我不完全确定你的程序是如何工作的,但我可以试试。
标签: javascript jquery