Saya membuat kode yang mengubah jumlah yang diberikan menjadi kata-kata, inilah yang saya dapatkan setelah googling. Tapi saya pikir itu kode yang agak panjang untuk mencapai tugas sederhana. Dua Ekspresi Reguler dan dua for
loop, saya ingin sesuatu yang lebih sederhana.
Saya mencoba membuatnya sesingkat mungkin. dan akan memposting apa yang saya hasilkan
Ada saran?
var th = ['','thousand','million', 'billion','trillion'];
var dg = ['zero','one','two','three','four', 'five','six','seven','eight','nine'];
var tn = ['ten','eleven','twelve','thirteen', 'fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen'];
var tw = ['twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety'];
function toWords(s) {
s = s.toString();
s = s.replace(/[\, ]/g,'');
if (s != parseFloat(s)) return 'not a number';
var x = s.indexOf('.');
if (x == -1)
x = s.length;
if (x > 15)
return 'too big';
var n = s.split('');
var str = '';
var sk = 0;
for (var i=0; i < x; i++) {
if ((x-i)%3==2) {
if (n[i] == '1') {
str += tn[Number(n[i+1])] + ' ';
i++;
sk=1;
} else if (n[i]!=0) {
str += tw[n[i]-2] + ' ';
sk=1;
}
} else if (n[i]!=0) { // 0235
str += dg[n[i]] +' ';
if ((x-i)%3==0) str += 'hundred ';
sk=1;
}
if ((x-i)%3==1) {
if (sk)
str += th[(x-i-1)/3] + ' ';
sk=0;
}
}
if (x != s.length) {
var y = s.length;
str += 'point ';
for (var i=x+1; i<y; i++)
str += dg[n[i]] +' ';
}
return str.replace(/\s+/g,' ');
}
Selain itu, kode di atas diubah ke sistem penomoran bahasa Inggris seperti Juta / Miliar, saya tidak ingin sistem penomoran Asia Selatan. seperti di Lakhs dan Crores
javascript
Jeo
sumber
sumber
Jawaban:
Pembaruan : Sepertinya ini lebih berguna dari yang saya kira. Saya baru saja menerbitkan ini di npm. https://www.npmjs.com/package/num-words
Ini kode yang lebih pendek. dengan satu RegEx dan tanpa loop. mengonversi sesuai keinginan, dalam sistem penomoran Asia Selatan
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']; function inWords (num) { if ((num = num.toString()).length > 9) return 'overflow'; n = ('000000000' + num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/); if (!n) return; var str = ''; str += (n[1] != 0) ? (a[Number(n[1])] || b[n[1][0]] + ' ' + a[n[1][1]]) + 'crore ' : ''; str += (n[2] != 0) ? (a[Number(n[2])] || b[n[2][0]] + ' ' + a[n[2][1]]) + 'lakh ' : ''; str += (n[3] != 0) ? (a[Number(n[3])] || b[n[3][0]] + ' ' + a[n[3][1]]) + 'thousand ' : ''; str += (n[4] != 0) ? (a[Number(n[4])] || b[n[4][0]] + ' ' + a[n[4][1]]) + 'hundred ' : ''; str += (n[5] != 0) ? ((str != '') ? 'and ' : '') + (a[Number(n[5])] || b[n[5][0]] + ' ' + a[n[5][1]]) + 'only ' : ''; return str; } document.getElementById('number').onkeyup = function () { document.getElementById('words').innerHTML = inWords(document.getElementById('number').value); };
<span id="words"></span> <input id="number" type="text" />
Satu-satunya batasan adalah, Anda dapat mengonversi maksimal 9 digit, yang menurut saya lebih dari cukup dalam banyak kasus ..
sumber
inWords(973267430)
pengembalian ** sembilan puluh tujuh crore tiga puluh dua lakh enam puluh tujuh ribu empat ratus tiga puluh saja **.100 Thousand
. Mereka menyebutnya1 Lakh
, jadi pengelompokan dua menjadi masuk akal. Btw, apa yang Anda harapkan sebagai keluaran untuk 973267430?Memang. Ada banyak setan kecil yang nongkrong dalam detail masalah ini. Sangat menyenangkan untuk menyelesaikannya.
EDIT: Pembaruan ini membutuhkan pendekatan komposisi yang jauh lebih banyak. Sebelumnya ada satu fungsi besar yang membungkus beberapa fungsi berpemilik lainnya. Sebaliknya, kali ini kami mendefinisikan fungsi umum yang dapat digunakan kembali yang dapat digunakan untuk berbagai jenis tugas. Lebih lanjut tentang itu setelah kita melihatnya
numToWords
sendiri…// numToWords :: (Number a, String a) => a -> String let numToWords = n => { let a = [ '', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ]; let b = [ '', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ]; let g = [ '', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion' ]; // this part is really nasty still // it might edit this again later to show how Monoids could fix this up let makeGroup = ([ones,tens,huns]) => { return [ num(huns) === 0 ? '' : a[huns] + ' hundred ', num(ones) === 0 ? b[tens] : b[tens] && b[tens] + '-' || '', a[tens+ones] || a[ones] ].join(''); }; // "thousands" constructor; no real good names for this, i guess let thousand = (group,i) => group === '' ? group : `${group} ${g[i]}`; // execute ! if (typeof n === 'number') return numToWords(String(n)); if (n === '0') return 'zero'; return comp (chunk(3)) (reverse) (arr(n)) .map(makeGroup) .map(thousand) .filter(comp(not)(isEmpty)) .reverse() .join(' '); };
Berikut dependensinya:
Anda akan melihat ini tidak memerlukan dokumentasi karena maksud mereka segera jelas.
chunk
mungkin satu-satunya yang membutuhkan waktu untuk dicerna, tetapi sebenarnya tidak terlalu buruk. Ditambah nama fungsi memberi kita indikasi yang cukup bagus tentang fungsinya, dan itu mungkin fungsi yang pernah kita temui sebelumnya.const arr = x => Array.from(x); const num = x => Number(x) || 0; const str = x => String(x); const isEmpty = xs => xs.length === 0; const take = n => xs => xs.slice(0,n); const drop = n => xs => xs.slice(n); const reverse = xs => xs.slice(0).reverse(); const comp = f => g => x => f (g (x)); const not = x => !x; const chunk = n => xs => isEmpty(xs) ? [] : [take(n)(xs), ...chunk (n) (drop (n) (xs))];
"Jadi ini membuatnya lebih baik?"
Lihatlah bagaimana kode telah dibersihkan secara signifikan
// NEW CODE (truncated) return comp (chunk(3)) (reverse) (arr(n)) .map(makeGroup) .map(thousand) .filter(comp(not)(isEmpty)) .reverse() .join(' '); // OLD CODE (truncated) let grp = n => ('000' + n).substr(-3); let rem = n => n.substr(0, n.length - 3); let cons = xs => x => g => x ? [x, g && ' ' + g || '', ' ', xs].join('') : xs; let iter = str => i => x => r => { if (x === '000' && r.length === 0) return str; return iter(cons(str)(fmt(x))(g[i])) (i+1) (grp(r)) (rem(r)); }; return iter('')(0)(grp(String(n)))(rem(String(n)));
Yang terpenting, fungsi utilitas yang kami tambahkan di kode baru dapat digunakan di tempat lain di aplikasi Anda. Artinya, sebagai efek samping dari penerapan
numToWords
cara ini, kita mendapatkan fungsi lainnya secara gratis. Soda bonus!Beberapa tes
console.log(numToWords(11009)); //=> eleven thousand nine console.log(numToWords(10000001)); //=> ten million one console.log(numToWords(987)); //=> nine hundred eighty-seven console.log(numToWords(1015)); //=> one thousand fifteen console.log(numToWords(55111222333)); //=> fifty-five billion one hundred eleven million two hundred // twenty-two thousand three hundred thirty-three console.log(numToWords("999999999999999999999991")); //=> nine hundred ninety-nine sextillion nine hundred ninety-nine // quintillion nine hundred ninety-nine quadrillion nine hundred // ninety-nine trillion nine hundred ninety-nine billion nine // hundred ninety-nine million nine hundred ninety-nine thousand // nine hundred ninety-one console.log(numToWords(6000753512)); //=> six billion seven hundred fifty-three thousand five hundred // twelve
Demo yang dapat dijalankan
Tampilkan cuplikan kode
const arr = x => Array.from(x); const num = x => Number(x) || 0; const str = x => String(x); const isEmpty = xs => xs.length === 0; const take = n => xs => xs.slice(0,n); const drop = n => xs => xs.slice(n); const reverse = xs => xs.slice(0).reverse(); const comp = f => g => x => f (g (x)); const not = x => !x; const chunk = n => xs => isEmpty(xs) ? [] : [take(n)(xs), ...chunk (n) (drop (n) (xs))]; // numToWords :: (Number a, String a) => a -> String let numToWords = n => { let a = [ '', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ]; let b = [ '', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ]; let g = [ '', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion' ]; // this part is really nasty still // it might edit this again later to show how Monoids could fix this up let makeGroup = ([ones,tens,huns]) => { return [ num(huns) === 0 ? '' : a[huns] + ' hundred ', num(ones) === 0 ? b[tens] : b[tens] && b[tens] + '-' || '', a[tens+ones] || a[ones] ].join(''); }; let thousand = (group,i) => group === '' ? group : `${group} ${g[i]}`; if (typeof n === 'number') return numToWords(String(n)); else if (n === '0') return 'zero'; else return comp (chunk(3)) (reverse) (arr(n)) .map(makeGroup) .map(thousand) .filter(comp(not)(isEmpty)) .reverse() .join(' '); }; console.log(numToWords(11009)); //=> eleven thousand nine console.log(numToWords(10000001)); //=> ten million one console.log(numToWords(987)); //=> nine hundred eighty-seven console.log(numToWords(1015)); //=> one thousand fifteen console.log(numToWords(55111222333)); //=> fifty-five billion one hundred eleven million two hundred // twenty-two thousand three hundred thirty-three console.log(numToWords("999999999999999999999991")); //=> nine hundred ninety-nine sextillion nine hundred ninety-nine // quintillion nine hundred ninety-nine quadrillion nine hundred // ninety-nine trillion nine hundred ninety-nine billion nine // hundred ninety-nine million nine hundred ninety-nine thousand // nine hundred ninety-one console.log(numToWords(6000753512)); //=> six billion seven hundred fifty-three thousand five hundred // twelve
Anda dapat mentranspilasi kode menggunakan babel.js jika Anda ingin melihat varian ES5
sumber
cons
fungsinya sesuai.text = text.replace(/(\d+)/g, function (number) { return(toWords(number)) });
Saya menghabiskan waktu untuk mengembangkan solusi yang lebih baik untuk ini. Ini bisa menangani angka yang sangat besar tetapi begitu mereka melebihi 16 digit Anda harus memasukkan nomor tersebut sebagai string. Sesuatu tentang batas nomor JavaScript.
function numberToEnglish( n ) { var string = n.toString(), units, tens, scales, start, end, chunks, chunksLen, chunk, ints, i, word, words, and = 'and'; /* Remove spaces and commas */ string = string.replace(/[, ]/g,""); /* Is number zero? */ if( parseInt( string ) === 0 ) { return 'zero'; } /* Array of units as words */ units = [ '', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ]; /* Array of tens as words */ tens = [ '', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ]; /* Array of scales as words */ scales = [ '', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quatttuor-decillion', 'quindecillion', 'sexdecillion', 'septen-decillion', 'octodecillion', 'novemdecillion', 'vigintillion', 'centillion' ]; /* Split user argument into 3 digit chunks from right to left */ start = string.length; chunks = []; while( start > 0 ) { end = start; chunks.push( string.slice( ( start = Math.max( 0, start - 3 ) ), end ) ); } /* Check if function has enough scale words to be able to stringify the user argument */ chunksLen = chunks.length; if( chunksLen > scales.length ) { return ''; } /* Stringify each integer in each chunk */ words = []; for( i = 0; i < chunksLen; i++ ) { chunk = parseInt( chunks[i] ); if( chunk ) { /* Split chunk into array of individual integers */ ints = chunks[i].split( '' ).reverse().map( parseFloat ); /* If tens integer is 1, i.e. 10, then add 10 to units integer */ if( ints[1] === 1 ) { ints[0] += 10; } /* Add scale word if chunk is not zero and array item exists */ if( ( word = scales[i] ) ) { words.push( word ); } /* Add unit word if array item exists */ if( ( word = units[ ints[0] ] ) ) { words.push( word ); } /* Add tens word if array item exists */ if( ( word = tens[ ints[1] ] ) ) { words.push( word ); } /* Add 'and' string after units or tens integer if: */ if( ints[0] || ints[1] ) { /* Chunk has a hundreds integer or chunk is the first of multiple chunks */ if( ints[2] || ! i && chunksLen ) { words.push( and ); } } /* Add hundreds word if array item exists */ if( ( word = units[ ints[2] ] ) ) { words.push( word + ' hundred' ); } } } return words.reverse().join( ' ' ); } // - - - - - Tests - - - - - - function test(v) { var sep = ('string'==typeof v)?'"':''; console.log("numberToEnglish("+sep + v.toString() + sep+") = "+numberToEnglish(v)); } test(2); test(721); test(13463); test(1000001); test("21,683,200,000,621,384");
sumber
and
logika Anda salah untuk1<=n<100
mis .numberToEnglish(2)
Pengembalianand two
. Untungnya ini tampaknya berhasil tanpa mereka, cukup beri komentar// words.push( and );
- Bahasa Inggris cukup senang dengan atau tanpa mereka. :)if( ints[2] || (i + 1) < chunksLen ) { words.push( and ); and = ''; }
Ini hanya menambah satu danAnda mungkin ingin mencobanya secara rekursif. Ini berfungsi untuk angka antara 0 dan 999999. Perlu diingat bahwa (~~) melakukan hal yang sama seperti Math.floor
var num = "zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen".split(" "); var tens = "twenty thirty forty fifty sixty seventy eighty ninety".split(" "); function number2words(n){ if (n < 20) return num[n]; var digit = n%10; if (n < 100) return tens[~~(n/10)-2] + (digit? "-" + num[digit]: ""); if (n < 1000) return num[~~(n/100)] +" hundred" + (n%100 == 0? "": " " + number2words(n%100)); return number2words(~~(n/1000)) + " thousand" + (n%1000 != 0? " " + number2words(n%1000): ""); }
sumber
eg: 164.8 => One hundred and Sixty Four Dollars and 80/100
Saya suka hasil yang saya dapatkan di sini yang menurut saya mudah dibaca dan cukup pendek untuk dijadikan solusi.
function NumInWords (number) { const first = ['','one ','two ','three ','four ', 'five ','six ','seven ','eight ','nine ','ten ','eleven ','twelve ','thirteen ','fourteen ','fifteen ','sixteen ','seventeen ','eighteen ','nineteen ']; const tens = ['', '', 'twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety']; const mad = ['', 'thousand', 'million', 'billion', 'trillion']; let word = ''; for (let i = 0; i < mad.length; i++) { let tempNumber = number%(100*Math.pow(1000,i)); if (Math.floor(tempNumber/Math.pow(1000,i)) !== 0) { if (Math.floor(tempNumber/Math.pow(1000,i)) < 20) { word = first[Math.floor(tempNumber/Math.pow(1000,i))] + mad[i] + ' ' + word; } else { word = tens[Math.floor(tempNumber/(10*Math.pow(1000,i)))] + '-' + first[Math.floor(tempNumber/Math.pow(1000,i))%10] + mad[i] + ' ' + word; } } tempNumber = number%(Math.pow(1000,i+1)); if (Math.floor(tempNumber/(100*Math.pow(1000,i))) !== 0) word = first[Math.floor(tempNumber/(100*Math.pow(1000,i)))] + 'hunderd ' + word; } return word; } console.log(NumInWords(89754697976431))
Dan hasilnya adalah:
sumber
<html> <head> <title>HTML - Convert numbers to words using JavaScript</title> <script type="text/javascript"> function onlyNumbers(evt) { var e = event || evt; // For trans-browser compatibility var charCode = e.which || e.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) return false; return true; } function NumToWord(inputNumber, outputControl) { var str = new String(inputNumber) var splt = str.split(""); var rev = splt.reverse(); var once = ['Zero', ' One', ' Two', ' Three', ' Four', ' Five', ' Six', ' Seven', ' Eight', ' Nine']; var twos = ['Ten', ' Eleven', ' Twelve', ' Thirteen', ' Fourteen', ' Fifteen', ' Sixteen', ' Seventeen', ' Eighteen', ' Nineteen']; var tens = ['', 'Ten', ' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty', ' Seventy', ' Eighty', ' Ninety']; numLength = rev.length; var word = new Array(); var j = 0; for (i = 0; i < numLength; i++) { switch (i) { case 0: if ((rev[i] == 0) || (rev[i + 1] == 1)) { word[j] = ''; } else { word[j] = '' + once[rev[i]]; } word[j] = word[j]; break; case 1: aboveTens(); break; case 2: if (rev[i] == 0) { word[j] = ''; } else if ((rev[i - 1] == 0) || (rev[i - 2] == 0)) { word[j] = once[rev[i]] + " Hundred "; } else { word[j] = once[rev[i]] + " Hundred and"; } break; case 3: if (rev[i] == 0 || rev[i + 1] == 1) { word[j] = ''; } else { word[j] = once[rev[i]]; } if ((rev[i + 1] != 0) || (rev[i] > 0)) { word[j] = word[j] + " Thousand"; } break; case 4: aboveTens(); break; case 5: if ((rev[i] == 0) || (rev[i + 1] == 1)) { word[j] = ''; } else { word[j] = once[rev[i]]; } if (rev[i + 1] !== '0' || rev[i] > '0') { word[j] = word[j] + " Lakh"; } break; case 6: aboveTens(); break; case 7: if ((rev[i] == 0) || (rev[i + 1] == 1)) { word[j] = ''; } else { word[j] = once[rev[i]]; } if (rev[i + 1] !== '0' || rev[i] > '0') { word[j] = word[j] + " Crore"; } break; case 8: aboveTens(); break; // This is optional. // case 9: // if ((rev[i] == 0) || (rev[i + 1] == 1)) { // word[j] = ''; // } // else { // word[j] = once[rev[i]]; // } // if (rev[i + 1] !== '0' || rev[i] > '0') { // word[j] = word[j] + " Arab"; // } // break; // case 10: // aboveTens(); // break; default: break; } j++; } function aboveTens() { if (rev[i] == 0) { word[j] = ''; } else if (rev[i] == 1) { word[j] = twos[rev[i - 1]]; } else { word[j] = tens[rev[i]]; } } word.reverse(); var finalOutput = ''; for (i = 0; i < numLength; i++) { finalOutput = finalOutput + word[i]; } document.getElementById(outputControl).innerHTML = finalOutput; } </script> </head> <body> <h1> HTML - Convert numbers to words using JavaScript</h1> <input id="Text1" type="text" onkeypress="return onlyNumbers(this.value);" onkeyup="NumToWord(this.value,'divDisplayWords');" maxlength="9" style="background-color: #efefef; border: 2px solid #CCCCC; font-size: large" /> <br /> <br /> <div id="divDisplayWords" style="font-size: 13; color: Teal; font-family: Arial;"> </div> </body> </html>
sumber
Saya memodifikasi kode MC Shaman untuk memperbaiki bug dari nomor tunggal yang muncul dan muncul sebelumnya
function numberToEnglish( n ) { var string = n.toString(), units, tens, scales, start, end, chunks, chunksLen, chunk, ints, i, word, words, and = 'and'; /* Remove spaces and commas */ string = string.replace(/[, ]/g,""); /* Is number zero? */ if( parseInt( string ) === 0 ) { return 'zero'; } /* Array of units as words */ units = [ '', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ]; /* Array of tens as words */ tens = [ '', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ]; /* Array of scales as words */ scales = [ '', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quatttuor-decillion', 'quindecillion', 'sexdecillion', 'septen-decillion', 'octodecillion', 'novemdecillion', 'vigintillion', 'centillion' ]; /* Split user argument into 3 digit chunks from right to left */ start = string.length; chunks = []; while( start > 0 ) { end = start; chunks.push( string.slice( ( start = Math.max( 0, start - 3 ) ), end ) ); } /* Check if function has enough scale words to be able to stringify the user argument */ chunksLen = chunks.length; if( chunksLen > scales.length ) { return ''; } /* Stringify each integer in each chunk */ words = []; for( i = 0; i < chunksLen; i++ ) { chunk = parseInt( chunks[i] ); if( chunk ) { /* Split chunk into array of individual integers */ ints = chunks[i].split( '' ).reverse().map( parseFloat ); /* If tens integer is 1, i.e. 10, then add 10 to units integer */ if( ints[1] === 1 ) { ints[0] += 10; } /* Add scale word if chunk is not zero and array item exists */ if( ( word = scales[i] ) ) { words.push( word ); } /* Add unit word if array item exists */ if( ( word = units[ ints[0] ] ) ) { words.push( word ); } /* Add tens word if array item exists */ if( ( word = tens[ ints[1] ] ) ) { words.push( word ); } /* Add 'and' string after units or tens integer if: */ if( ints[0] || ints[1] ) { /* Chunk has a hundreds integer or chunk is the first of multiple chunks */ if( ints[2] || (i + 1) > chunksLen ) { words.push( and ); } } /* Add hundreds word if array item exists */ if( ( word = units[ ints[2] ] ) ) { words.push( word + ' hundred' ); } } } return words.reverse().join( ' ' ); } // - - - - - Tests - - - - - - function figure(val) { finalFig = numberToEnglish(val); document.getElementById("words").innerHTML = finalFig; }
<span id="words"></span> <input id="number" type="text" onkeyup=figure(this.value) />
sumber
Mengonversi string input menjadi angka daripada menyimpannya sebagai string, membatasi solusi ke nilai float / integer maksimum yang diizinkan pada mesin / browser itu. Skrip saya di bawah ini menangani mata uang hingga 1 Triliun dolar - 1 sen :-). Saya dapat diperpanjang untuk menangani hingga 999 Triliun dengan menambahkan 3 atau 4 baris kode.
var ones = ["","One","Two","Three","Four","Five","Six","Seven","Eight", "Nine","Ten","Eleven","Twelve","Thirteen","Fourteen", "Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"]; var tens = ["","","Twenty","Thirty","Forty","Fifty","Sixty","Seventy", "Eighty","Ninety"]; function words999(n999) { // n999 is an integer less than or equal to 999. // // Accept any 3 digit int incl 000 & 999 and return words. // var words = ''; var Hn = 0; var n99 = 0; Hn = Math.floor(n999 / 100); // # of hundreds in it if (Hn > 0) { // if at least one 100 words = words99(Hn) + " Hundred"; // one call for hundreds } n99 = n999 - (Hn * 100); // subtract the hundreds. words += ((words == '')?'':' ') + words99(n99); // combine the hundreds with tens & ones. return words; } // function words999( n999 ) function words99(n99) { // n99 is an integer less than or equal to 99. // // Accept any 2 digit int incl 00 & 99 and return words. // var words = ''; var Dn = 0; var Un = 0; Dn = Math.floor(n99 / 10); // # of tens Un = n99 % 10; // units if (Dn > 0 || Un > 0) { if (Dn < 2) { words += ones[Dn * 10 + Un]; // words for a # < 20 } else { words += tens[Dn]; if (Un > 0) words += "-" + ones[Un]; } } // if ( Dn > 0 || Un > 0 ) return words; } // function words99( n99 ) function getAmtInWords(id1, id2) { // use numeric value of id1 to populate text in id2 // // Read numeric amount field and convert into word amount // var t1 = document.getElementById(id1).value; var t2 = t1.trim(); amtStr = t2.replace(/,/g,''); // $123,456,789.12 = 123456789.12 dotPos = amtStr.indexOf('.'); // position of dot before cents, -ve if it doesn't exist. if (dotPos > 0) { dollars = amtStr.slice(0,dotPos); // 1234.56 = 1234 cents = amtStr.slice(dotPos+1); // 1234.56 = .56 } else if (dotPos == 0) { dollars = '0'; cents = amtStr.slice(dotPos+1); // 1234.56 = .56 } else { dollars = amtStr.slice(0); // 1234 = 1234 cents = '0'; } t1 = '000000000000' + dollars; // to extend to trillion, use 15 zeros dollars = t1.slice(-12); // and -15 here. billions = Number(dollars.substr(0,3)); millions = Number(dollars.substr(3,3)); thousands = Number(dollars.substr(6,3)); hundreds = Number(dollars.substr(9,3)); t1 = words999(billions); bW = t1.trim(); // Billions in words t1 = words999(millions); mW = t1.trim(); // Millions in words t1 = words999(thousands); tW = t1.trim(); // Thousands in words t1 = words999(hundreds); hW = t1.trim(); // Hundreds in words t1 = words99(cents); cW = t1.trim(); // Cents in words var totAmt = ''; if (bW != '') totAmt += ((totAmt != '') ? ' ' : '') + bW + ' Billion'; if (mW != '') totAmt += ((totAmt != '') ? ' ' : '') + mW + ' Million'; if (tW != '') totAmt += ((totAmt != '') ? ' ' : '') + tW + ' Thousand'; if (hW != '') totAmt += ((totAmt != '') ? ' ' : '') + hW + ' Dollars'; if (cW != '') totAmt += ((totAmt != '') ? ' and ' : '') + cW + ' Cents'; // alert('totAmt = ' + totAmt); // display words in a alert t1 = document.getElementById(id2).value; t2 = t1.trim(); if (t2 == '') document.getElementById(id2).value = totAmt; return false; } // function getAmtInWords( id1, id2 ) // ======================== [ End Code ] ====================================
sumber
Jika Anda membutuhkan dengan Cent maka Anda dapat menggunakan yang ini
<script> var iWords = ['zero', ' one', ' two', ' three', ' four', ' five', ' six', ' seven', ' eight', ' nine']; var ePlace = ['ten', ' eleven', ' twelve', ' thirteen', ' fourteen', ' fifteen', ' sixteen', ' seventeen', ' eighteen', ' nineteen']; var tensPlace = ['', ' ten', ' twenty', ' thirty', ' forty', ' fifty', ' sixty', ' seventy', ' eighty', ' ninety']; var inWords = []; var numReversed, inWords, actnumber, i, j; function tensComplication() { if (actnumber[i] == 0) { inWords[j] = ''; } else if (actnumber[i] == 1) { inWords[j] = ePlace[actnumber[i - 1]]; } else { inWords[j] = tensPlace[actnumber[i]]; } } function convertAmount() { var numericValue = document.getElementById('bdt').value; numericValue = parseFloat(numericValue).toFixed(2); var amount = numericValue.toString().split('.'); var taka = amount[0]; var paisa = amount[1]; document.getElementById('container').innerHTML = convert(taka) +" taka and "+ convert(paisa)+" paisa only"; } function convert(numericValue) { inWords = [] if(numericValue == "00" || numericValue =="0"){ return 'zero'; } var obStr = numericValue.toString(); numReversed = obStr.split(''); actnumber = numReversed.reverse(); if (Number(numericValue) == 0) { document.getElementById('container').innerHTML = 'BDT Zero'; return false; } var iWordsLength = numReversed.length; var finalWord = ''; j = 0; for (i = 0; i < iWordsLength; i++) { switch (i) { case 0: if (actnumber[i] == '0' || actnumber[i + 1] == '1') { inWords[j] = ''; } else { inWords[j] = iWords[actnumber[i]]; } inWords[j] = inWords[j] + ''; break; case 1: tensComplication(); break; case 2: if (actnumber[i] == '0') { inWords[j] = ''; } else if (actnumber[i - 1] !== '0' && actnumber[i - 2] !== '0') { inWords[j] = iWords[actnumber[i]] + ' hundred'; } else { inWords[j] = iWords[actnumber[i]] + ' hundred'; } break; case 3: if (actnumber[i] == '0' || actnumber[i + 1] == '1') { inWords[j] = ''; } else { inWords[j] = iWords[actnumber[i]]; } if (actnumber[i + 1] !== '0' || actnumber[i] > '0') { inWords[j] = inWords[j] + ' thousand'; } break; case 4: tensComplication(); break; case 5: if (actnumber[i] == '0' || actnumber[i + 1] == '1') { inWords[j] = ''; } else { inWords[j] = iWords[actnumber[i]]; } if (actnumber[i + 1] !== '0' || actnumber[i] > '0') { inWords[j] = inWords[j] + ' lakh'; } break; case 6: tensComplication(); break; case 7: if (actnumber[i] == '0' || actnumber[i + 1] == '1') { inWords[j] = ''; } else { inWords[j] = iWords[actnumber[i]]; } inWords[j] = inWords[j] + ' crore'; break; case 8: tensComplication(); break; default: break; } j++; } inWords.reverse(); for (i = 0; i < inWords.length; i++) { finalWord += inWords[i]; } return finalWord; } </script> <input type="text" name="bdt" id="bdt" /> <input type="button" name="sr1" value="Click Here" onClick="convertAmount()"/> <div id="container"></div>
js fiddle
Di sini taka berarti USD dan paisa berarti sen
sumber
Ini adalah tanggapan atas komentar @ LordZardeck atas jawaban bagus @ naomik di atas . Maaf, saya akan berkomentar secara langsung tetapi saya belum pernah memposting sebelumnya, jadi saya tidak memiliki hak istimewa untuk melakukannya, jadi saya memposting di sini.
Bagaimanapun, saya kebetulan menerjemahkan versi ES5 ke bentuk yang lebih mudah dibaca akhir pekan lalu jadi saya membagikannya di sini. Ini harus sesuai dengan aslinya (termasuk hasil edit terbaru) dan saya harap penamaannya jelas dan akurat.
function int_to_words(int) { if (int === 0) return 'zero'; var ONES = ['','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']; var TENS = ['','','twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']; var SCALE = ['','thousand','million','billion','trillion','quadrillion','quintillion','sextillion','septillion','octillion','nonillion']; // Return string of first three digits, padded with zeros if needed function get_first(str) { return ('000' + str).substr(-3); } // Return string of digits with first three digits chopped off function get_rest(str) { return str.substr(0, str.length - 3); } // Return string of triplet convereted to words function triplet_to_words(_3rd, _2nd, _1st) { return (_3rd == '0' ? '' : ONES[_3rd] + ' hundred ') + (_1st == '0' ? TENS[_2nd] : TENS[_2nd] && TENS[_2nd] + '-' || '') + (ONES[_2nd + _1st] || ONES[_1st]); } // Add to words, triplet words with scale word function add_to_words(words, triplet_words, scale_word) { return triplet_words ? triplet_words + (scale_word && ' ' + scale_word || '') + ' ' + words : words; } function iter(words, i, first, rest) { if (first == '000' && rest.length === 0) return words; return iter(add_to_words(words, triplet_to_words(first[0], first[1], first[2]), SCALE[i]), ++i, get_first(rest), get_rest(rest)); } return iter('', 0, get_first(String(int)), get_rest(String(int))); }
sumber
var inWords = function(totalRent){ //console.log(totalRent); 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 number = parseFloat(totalRent).toFixed(2).split("."); var num = parseInt(number[0]); var digit = parseInt(number[1]); //console.log(num); if ((num.toString()).length > 9) return 'overflow'; var n = ('000000000' + num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/); var d = ('00' + digit).substr(-2).match(/^(\d{2})$/);; if (!n) return; var str = ''; str += (n[1] != 0) ? (a[Number(n[1])] || b[n[1][0]] + ' ' + a[n[1][1]]) + 'crore ' : ''; str += (n[2] != 0) ? (a[Number(n[2])] || b[n[2][0]] + ' ' + a[n[2][1]]) + 'lakh ' : ''; str += (n[3] != 0) ? (a[Number(n[3])] || b[n[3][0]] + ' ' + a[n[3][1]]) + 'thousand ' : ''; str += (n[4] != 0) ? (a[Number(n[4])] || b[n[4][0]] + ' ' + a[n[4][1]]) + 'hundred ' : ''; str += (n[5] != 0) ? (a[Number(n[5])] || b[n[5][0]] + ' ' + a[n[5][1]]) + 'Rupee ' : ''; str += (d[1] != 0) ? ((str != '' ) ? "and " : '') + (a[Number(d[1])] || b[d[1][0]] + ' ' + a[d[1][1]]) + 'Paise ' : 'Only!'; console.log(str); return str; }
Ini adalah dukungan kode yang dimodifikasi untuk Rupee India dengan 2 tempat desimal.
sumber
Konversi lain yang menggunakan sisa dan mendukung bahasa yang berbeda:
function numberToWords(number) { var result = []; var fraction = number.toFixed(2).split('.'); var integer_part = parseInt(fraction[0]); // var fractional_part = parseInt(fraction[1]); -- not handled here var previousNumber = null; for (var i = 0; i < fraction[0].length; i++) { var reminder = Math.floor(integer_part % 10); integer_part /= 10; var name = getNumberName(reminder, i, fraction[0].length, previousNumber); previousNumber = reminder; if (name) result.push(name); } result.reverse(); return result.join(' '); }
The
getNumberName
fungsi nomor tergantung pada bahasa dan menangani hingga 9999 (tapi mudah untuk memperpanjang untuk menangani angka yang lebih besar):function getNumberName(number, power, places, previousNumber) { var result = ""; if (power == 1) { result = handleTeensAndTys(number, previousNumber); } else if (power == 0 && places != 1 || number == 0) { // skip number that was handled in teens and zero } else { result = locale.numberNames[number.toString()] + locale.powerNames[power.toString()]; } return result; }
handleTeensAndTys
menangani kelipatan sepuluh:function handleTeensAndTys(number, previousNumber) { var result = ""; if (number == 1) { // teens if (previousNumber in locale.specialTeenNames) { result = locale.specialTeenNames[previousNumber]; } else if (previousNumber in locale.specialTyNames) { result = locale.specialTyNames[previousNumber] + locale.teenSuffix; } else { result = locale.numberNames[previousNumber] + locale.teenSuffix; } } else if (number == 0) { // previousNumber was not handled in teens result = locale.numberNames[previousNumber.toString()]; } else { // other tys if (number in locale.specialTyNames) { result = locale.specialTyNames[number]; } else { result = locale.numberNames[number]; } result += locale.powerNames[1]; if (previousNumber != 0) { result += " " + locale.numberNames[previousNumber.toString()]; } } return result; }
Terakhir, contoh lokal:
var locale = { // English numberNames: {1: "one", 2: "two", 3: "three", 4: "four", 5: "five", 6: "six", 7: "seven", 8: "eight", 9: "nine" }, powerNames: {0: "", 1: "ty", 2: " hundred", 3: " thousand" }, specialTeenNames: {0: "ten", 1: "eleven", 2: "twelve" }, specialTyNames: {2: "twen", 3: "thir", 5: "fif" }, teenSuffix: "teen" }; var locale = { // Estonian numberNames: {1: "üks", 2: "kaks", 3: "kolm", 4: "neli", 5: "viis", 6: "kuus", 7: "seitse", 8: "kaheksa", 9: "üheksa"}, powerNames: {0: "", 1: "kümmend", 2: "sada", 3: " tuhat" }, specialTeenNames: {0: "kümme"}, specialTyNames: {}, teenSuffix: "teist" };
Ini JSFiddle dengan tes: https://jsfiddle.net/rcrxna7v/15/
sumber
Saya memodifikasi kode @ McShaman, mengubahnya menjadi CoffeeScript, dan menambahkan dokumen melalui JSNice . Inilah hasilnya, bagi yang berminat (bahasa Inggris):
### Convert an integer to an English string equivalent @param {Integer} number the integer to be converted @return {String} the English number equivalent ### inWords = (number) -> ### @property {Array} ### englishIntegers = [ "" "one " "two " "three " "four " "five " "six " "seven " "eight " "nine " "ten " "eleven " "twelve " "thirteen " "fourteen " "fifteen " "sixteen " "seventeen " "eighteen " "nineteen " ] ### @property {Array} ### englishIntegerTens = [ "" "" "twenty" "thirty" "forty" "fifty" "sixty" "seventy" "eighty" "ninety" ] ### @property {Array} ### englishIntegerThousands = [ "thousand" "million" "" ] number = number.toString() return "" if number.length > 9 ### @property {string} ### number = ("000000000" + number).substr(-9) ### @property {(Array.<string>|null)} ### number = number.match(/.{3}/g) ### @property {string} ### convertedWords = "" ### @property {number} ### i = 0 while i < englishIntegerThousands.length ### @property {string} ### currentNumber = number[i] ### @property {string} ### tempResult = "" tempResult += (if convertedWords isnt "" then " " + englishIntegerThousands[i] + " " else "") tempResult += (if currentNumber[0] isnt 0 then englishIntegers[Number(currentNumber[0])] + "hundred " else "") ### @property {string} ### currentNumber = currentNumber.substr(1) tempResult += (if currentNumber isnt 0 then ((if tempResult isnt "" then "and " else "")) + (englishIntegers[Number(currentNumber)] or englishIntegerTens[currentNumber[0]] + " " + englishIntegers[currentNumber[1]]) else "") convertedWords += tempResult i++ convertedWords
sumber
Meskipun, pertanyaan ini telah dijawab - saya masih ingin berbagi sesuatu yang baru-baru ini saya kembangkan dalam skrip java (berdasarkan logika implementasi C #. Net lama yang saya temukan di Internet) untuk mengubah nilai mata uang India menjadi Words. Itu bisa menangani hingga 40 digit. Anda bisa melihatnya.
Penggunaan: InrToWordConverter.Initialize () ;. var inWords = InrToWordConverter.ConvertToWord (jumlah);
Penerapan:
htPunctuation = {}; listStaticSuffix = {}; listStaticPrefix = {}; listHelpNotation = {}; var InrToWordConverter = function () { }; InrToWordConverter.Initialize = function () { InrToWordConverter.LoadStaticPrefix(); InrToWordConverter.LoadStaticSuffix(); InrToWordConverter.LoadHelpofNotation(); }; InrToWordConverter.ConvertToWord = function (value) { value = value.toString(); if (value) { var tokens = value.split("."); var rsPart = ""; var psPart = ""; if (tokens.length === 2) { rsPart = String.trim(tokens[0]) || "0"; psPart = String.trim(tokens[1]) || "0"; } else if (tokens.length === 1) { rsPart = String.trim(tokens[0]) || "0"; psPart = "0"; } else { rsPart = "0"; psPart = "0"; } htPunctuation = {}; var rsInWords = InrToWordConverter.ConvertToWordInternal(rsPart) || "Zero"; var psInWords = InrToWordConverter.ConvertToWordInternal(psPart) || "Zero"; var result = "Rupees " + rsInWords + "and " + psInWords + " Paise."; return result; } }; InrToWordConverter.ConvertToWordInternal = function (value) { var convertedString = ""; if (!(value.toString().length > 40)) { if (InrToWordConverter.IsNumeric(value.toString())) { try { var strValue = InrToWordConverter.Reverse(value); switch (strValue.length) { case 1: if (parseInt(strValue.toString()) > 0) { convertedString = InrToWordConverter.GetWordConversion(value); } else { convertedString = "Zero "; } break; case 2: convertedString = InrToWordConverter.GetWordConversion(value); break; default: InrToWordConverter.InsertToPunctuationTable(strValue); InrToWordConverter.ReverseHashTable(); convertedString = InrToWordConverter.ReturnHashtableValue(); break; } } catch (exception) { convertedString = "Unexpected Error Occured <br/>"; } } else { convertedString = "Please Enter Numbers Only, Decimal Values Are not supported"; } } else { convertedString = "Please Enter Value in Less Then or Equal to 40 Digit"; } return convertedString; }; InrToWordConverter.IsNumeric = function (valueInNumeric) { var isFine = true; valueInNumeric = valueInNumeric || ""; var len = valueInNumeric.length; for (var i = 0; i < len; i++) { var ch = valueInNumeric[i]; if (!(ch >= '0' && ch <= '9')) { isFine = false; break; } } return isFine; }; InrToWordConverter.ReturnHashtableValue = function () { var strFinalString = ""; var keysArr = []; for (var key in htPunctuation) { keysArr.push(key); } for (var i = keysArr.length - 1; i >= 0; i--) { var hKey = keysArr[i]; if (InrToWordConverter.GetWordConversion((htPunctuation[hKey]).toString()) !== "") { strFinalString = strFinalString + InrToWordConverter.GetWordConversion((htPunctuation[hKey]).toString()) + InrToWordConverter.StaticPrefixFind((hKey).toString()); } } return strFinalString; }; InrToWordConverter.ReverseHashTable = function () { var htTemp = {}; for (var key in htPunctuation) { var item = htPunctuation[key]; htTemp[key] = InrToWordConverter.Reverse(item.toString()); } htPunctuation = {}; htPunctuation = htTemp; }; InrToWordConverter.InsertToPunctuationTable = function (strValue) { htPunctuation[1] = strValue.substr(0, 3).toString(); var j = 2; for (var i = 3; i < strValue.length; i = i + 2) { if (strValue.substr(i).length > 0) { if (strValue.substr(i).length >= 2) { htPunctuation[j] = strValue.substr(i, 2).toString(); } else { htPunctuation[j] = strValue.substr(i, 1).toString(); } } else { break; } j++; } }; InrToWordConverter.Reverse = function (strValue) { var reversed = ""; for (var i in strValue) { var ch = strValue[i]; reversed = ch + reversed; } return reversed; }; InrToWordConverter.GetWordConversion = function (inputNumber) { var toReturnWord = ""; if (inputNumber.length <= 3 && inputNumber.length > 0) { if (inputNumber.length === 3) { if (parseInt(inputNumber.substr(0, 1)) > 0) { toReturnWord = toReturnWord + InrToWordConverter.StaticSuffixFind(inputNumber.substr(0, 1)) + "Hundred "; } var tempString = InrToWordConverter.StaticSuffixFind(inputNumber.substr(1, 2)); if (tempString === "") { toReturnWord = toReturnWord + InrToWordConverter.StaticSuffixFind(inputNumber.substr(1, 1) + "0"); toReturnWord = toReturnWord + InrToWordConverter.StaticSuffixFind(inputNumber.substr(2, 1)); } toReturnWord = toReturnWord + tempString; } if (inputNumber.length === 2) { var tempString = InrToWordConverter.StaticSuffixFind(inputNumber.substr(0, 2)); if (tempString === "") { toReturnWord = toReturnWord + InrToWordConverter.StaticSuffixFind(inputNumber.substr(0, 1) + "0"); toReturnWord = toReturnWord + InrToWordConverter.StaticSuffixFind(inputNumber.substr(1, 1)); } toReturnWord = toReturnWord + tempString; } if (inputNumber.length === 1) { toReturnWord = toReturnWord + InrToWordConverter.StaticSuffixFind(inputNumber.substr(0, 1)); } } return toReturnWord; }; InrToWordConverter.StaticSuffixFind = function (numberKey) { var valueFromNumber = ""; for (var key in listStaticSuffix) { if (String.trim(key.toString()) === String.trim(numberKey)) { valueFromNumber = listStaticSuffix[key].toString(); break; } } return valueFromNumber; }; InrToWordConverter.StaticPrefixFind = function (numberKey) { var valueFromNumber = ""; for (var key in listStaticPrefix) { if (String.trim(key) === String.trim(numberKey)) { valueFromNumber = listStaticPrefix[key].toString(); break; } } return valueFromNumber; }; InrToWordConverter.StaticHelpNotationFind = function (numberKey) { var helpText = ""; for (var key in listHelpNotation) { if (String.trim(key.toString()) === String.trim(numberKey)) { helpText = listHelpNotation[key].toString(); break; } } return helpText; }; InrToWordConverter.LoadStaticPrefix = function () { listStaticPrefix[2] = "Thousand "; listStaticPrefix[3] = "Lac "; listStaticPrefix[4] = "Crore "; listStaticPrefix[5] = "Arab "; listStaticPrefix[6] = "Kharab "; listStaticPrefix[7] = "Neel "; listStaticPrefix[8] = "Padma "; listStaticPrefix[9] = "Shankh "; listStaticPrefix[10] = "Maha-shankh "; listStaticPrefix[11] = "Ank "; listStaticPrefix[12] = "Jald "; listStaticPrefix[13] = "Madh "; listStaticPrefix[14] = "Paraardha "; listStaticPrefix[15] = "Ant "; listStaticPrefix[16] = "Maha-ant "; listStaticPrefix[17] = "Shisht "; listStaticPrefix[18] = "Singhar "; listStaticPrefix[19] = "Maha-singhar "; listStaticPrefix[20] = "Adant-singhar "; }; InrToWordConverter.LoadStaticSuffix = function () { listStaticSuffix[1] = "One "; listStaticSuffix[2] = "Two "; listStaticSuffix[3] = "Three "; listStaticSuffix[4] = "Four "; listStaticSuffix[5] = "Five "; listStaticSuffix[6] = "Six "; listStaticSuffix[7] = "Seven "; listStaticSuffix[8] = "Eight "; listStaticSuffix[9] = "Nine "; listStaticSuffix[10] = "Ten "; listStaticSuffix[11] = "Eleven "; listStaticSuffix[12] = "Twelve "; listStaticSuffix[13] = "Thirteen "; listStaticSuffix[14] = "Fourteen "; listStaticSuffix[15] = "Fifteen "; listStaticSuffix[16] = "Sixteen "; listStaticSuffix[17] = "Seventeen "; listStaticSuffix[18] = "Eighteen "; listStaticSuffix[19] = "Nineteen "; listStaticSuffix[20] = "Twenty "; listStaticSuffix[30] = "Thirty "; listStaticSuffix[40] = "Fourty "; listStaticSuffix[50] = "Fifty "; listStaticSuffix[60] = "Sixty "; listStaticSuffix[70] = "Seventy "; listStaticSuffix[80] = "Eighty "; listStaticSuffix[90] = "Ninty "; }; InrToWordConverter.LoadHelpofNotation = function () { listHelpNotation[2] = "=1,000 (3 Trailing Zeros)"; listHelpNotation[3] = "=1,00,000 (5 Trailing Zeros)"; listHelpNotation[4] = "=1,00,00,000 (7 Trailing Zeros)"; listHelpNotation[5] = "=1,00,00,00,000 (9 Trailing Zeros)"; listHelpNotation[6] = "=1,00,00,00,00,000 (11 Trailing Zeros)"; listHelpNotation[7] = "=1,00,00,00,00,00,000 (13 Trailing Zeros)"; listHelpNotation[8] = "=1,00,00,00,00,00,00,000 (15 Trailing Zeros)"; listHelpNotation[9] = "=1,00,00,00,00,00,00,00,000 (17 Trailing Zeros)"; listHelpNotation[10] = "=1,00,00,00,00,00,00,00,00,000 (19 Trailing Zeros)"; listHelpNotation[11] = "=1,00,00,00,00,00,00,00,00,00,000 (21 Trailing Zeros)"; listHelpNotation[12] = "=1,00,00,00,00,00,00,00,00,00,00,000 (23 Trailing Zeros)"; listHelpNotation[13] = "=1,00,00,00,00,00,00,00,00,00,00,00,000 (25 Trailing Zeros)"; listHelpNotation[14] = "=1,00,00,00,00,00,00,00,00,00,00,00,00,000 (27 Trailing Zeros)"; listHelpNotation[15] = "=1,00,00,00,00,00,00,00,00,00,00,00,00,00,000 (29 Trailing Zeros)"; listHelpNotation[16] = "=1,00,00,00,00,00,00,00,00,00,00,00,00,00,00,000 (31 Trailing Zeros)"; listHelpNotation[17] = "=1,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,000 (33 Trailing Zeros)"; listHelpNotation[18] = "=1,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,000 (35 Trailing Zeros)"; listHelpNotation[19] = "=1,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,000 (37 Trailing Zeros)"; listHelpNotation[20] = "=1,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,000 (39 Trailing Zeros)"; }; if (!String.trim) { String.trim = function (str) { var result = ""; var firstNonWhiteSpaceFound = false; var startIndex = -1; var endIndex = -1; if (str) { for (var i = 0; i < str.length; i++) { if (firstNonWhiteSpaceFound === false) { if (str[i] === ' ' || str[i] === '\t') { continue; } else { firstNonWhiteSpaceFound = true; startIndex = i; endIndex = i; } } else { if (str[i] === ' ' || str[i] === '\t') { continue; } else { endIndex = i; } } } if (startIndex !== -1 && endIndex !== -1) { result = str.slice(startIndex, endIndex + 1); } } return result; }; }
sumber
Berikut adalah terjemahan dari
Kasus uji ada di bagian bawah
var ONE_THOUSAND = Math.pow(10, 3); var ONE_MILLION = Math.pow(10, 6); var ONE_BILLION = Math.pow(10, 9); var ONE_TRILLION = Math.pow(10, 12); var ONE_QUADRILLION = Math.pow(10, 15); var ONE_QUINTILLION = Math.pow(10, 18); function integerToWord(integer) { var prefix = ''; var suffix = ''; if (!integer){ return "zero"; } if(integer < 0){ prefix = "negative"; suffix = integerToWord(-1 * integer); return prefix + " " + suffix; } if(integer <= 90){ switch (integer) { case integer < 0: prefix = "negative"; suffix = integerToWord(-1 * integer); return prefix + " " + suffix; case 1: return "one"; case 2: return "two"; case 3: return "three"; case 4: return "four"; case 5: return "five"; case 6: return "six"; case 7: return "seven"; case 8: return "eight"; case 9: return "nine"; case 10: return "ten"; case 11: return "eleven"; case 12: return "twelve"; case 13: return "thirteen"; case 14: return "fourteen"; case 15: return "fifteen"; case 16: return "sixteen"; case 17: return "seventeen"; case 18: return "eighteen"; case 19: return "nineteen"; case 20: return "twenty"; case 30: return "thirty"; case 40: return "forty"; case 50: return "fifty"; case 60: return "sixty"; case 70: return "seventy"; case 80: return "eighty"; case 90: return "ninety"; default: break; } } if(integer < 100){ prefix = integerToWord(integer - integer % 10); suffix = integerToWord(integer % 10); return prefix + "-" + suffix; } if(integer < ONE_THOUSAND){ prefix = integerToWord(parseInt(Math.floor(integer / 100), 10) ) + " hundred"; if (integer % 100){ suffix = " and " + integerToWord(integer % 100); } return prefix + suffix; } if(integer < ONE_MILLION){ prefix = integerToWord(parseInt(Math.floor(integer / ONE_THOUSAND), 10)) + " thousand"; if (integer % ONE_THOUSAND){ suffix = integerToWord(integer % ONE_THOUSAND); } } else if(integer < ONE_BILLION){ prefix = integerToWord(parseInt(Math.floor(integer / ONE_MILLION), 10)) + " million"; if (integer % ONE_MILLION){ suffix = integerToWord(integer % ONE_MILLION); } } else if(integer < ONE_TRILLION){ prefix = integerToWord(parseInt(Math.floor(integer / ONE_BILLION), 10)) + " billion"; if (integer % ONE_BILLION){ suffix = integerToWord(integer % ONE_BILLION); } } else if(integer < ONE_QUADRILLION){ prefix = integerToWord(parseInt(Math.floor(integer / ONE_TRILLION), 10)) + " trillion"; if (integer % ONE_TRILLION){ suffix = integerToWord(integer % ONE_TRILLION); } } else if(integer < ONE_QUINTILLION){ prefix = integerToWord(parseInt(Math.floor(integer / ONE_QUADRILLION), 10)) + " quadrillion"; if (integer % ONE_QUADRILLION){ suffix = integerToWord(integer % ONE_QUADRILLION); } } else { return ''; } return prefix + " " + suffix; } function moneyToWord(value){ var decimalValue = (value % 1); var integer = value - decimalValue; decimalValue = Math.round(decimalValue * 100); var decimalText = !decimalValue? '': integerToWord(decimalValue) + ' cent' + (decimalValue === 1? '': 's'); var integerText= !integer? '': integerToWord(integer) + ' dollar' + (integer === 1? '': 's'); return ( integer && !decimalValue? integerText: integer && decimalValue? integerText + ' and ' + decimalText: !integer && decimalValue? decimalText: 'zero cents' ); } function floatToWord(value){ var decimalValue = (value % 1); var integer = value - decimalValue; decimalValue = Math.round(decimalValue * 100); var decimalText = !decimalValue? '': decimalValue < 10? "point o' " + integerToWord(decimalValue): decimalValue % 10 === 0? 'point ' + integerToWord(decimalValue / 10): 'point ' + integerToWord(decimalValue); return ( integer && !decimalValue? integerToWord(integer): integer && decimalValue? [integerToWord(integer), decimalText].join(' '): !integer && decimalValue? decimalText: integerToWord(0) ); } // test (function(){ console.log('integerToWord =================================='); for(var i = 0; i < 101; ++i){ console.log('%s=%s', i, integerToWord(i)); } console.log('floatToWord ===================================='); i = 131; while(i--){ console.log('%s=%s', i / 100, floatToWord(i / 100)); } console.log('moneyToWord ===================================='); for(i = 0; i < 131; ++i){ console.log('%s=%s', i / 100, moneyToWord(i / 100)); } }());
sumber
Banyak jawaban bagus. Saya membutuhkan milik saya untuk sistem penomoran India (Asia Selatan). Saya memodifikasi salah satu kode di atas - melampirkannya di sini, seandainya, orang lain membutuhkan ini. Dalam sistem penomoran India, kelompok setelah ribuan berada dalam 2 digit, bukan 3 seperti pada sistem barat.
var IS_SOUTH_ASIAN = true; function int_to_words(int) { if (int === 0) return 'zero'; var ONES_WORD = ['','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']; var TENS_WORD = ['','','twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety']; var SCALE_WORD_WESTERN = ['','thousand','million','billion','trillion','quadrillion','quintillion','sextillion','septillion','octillion','nonillion']; var SCALE_WORD_SOUTH_ASIAN = ['','thousand','lakh','crore','arab','kharab','neel','padma','shankh','***','***']; var GROUP_SIZE = (typeof IS_SOUTH_ASIAN != "undefined" && IS_SOUTH_ASIAN) ? 2 : 3; var SCALE_WORD = (typeof IS_SOUTH_ASIAN != "undefined" && IS_SOUTH_ASIAN) ? SCALE_WORD_SOUTH_ASIAN : SCALE_WORD_WESTERN; // Return string of first three digits, padded with zeros if needed function get_first_3(str) { return ('000' + str).substr(-(3)); } function get_first(str) { //-- Return string of first GROUP_SIZE digits, padded with zeros if needed, if group size is 2, make it size 3 by prefixing with a '0' return (GROUP_SIZE == 2 ? '0' : '') + ('000' + str).substr(-(GROUP_SIZE)); } // Return string of digits with first three digits chopped off function get_rest_3(str) { return str.substr(0, str.length - 3); } function get_rest(str) { // Return string of digits with first GROUP_SIZE digits chopped off return str.substr(0, str.length - GROUP_SIZE); } // Return string of triplet convereted to words function triplet_to_words(_3rd, _2nd, _1st) { return (_3rd == '0' ? '' : ONES_WORD[_3rd] + ' hundred ') + (_1st == '0' ? TENS_WORD[_2nd] : TENS_WORD[_2nd] && TENS_WORD[_2nd] + '-' || '') + (ONES_WORD[_2nd + _1st] || ONES_WORD[_1st]); //-- 1st one returns one-nineteen - second one returns one-nine } // Add to result, triplet words with scale word function add_to_result(result, triplet_words, scale_word) { return triplet_words ? triplet_words + (scale_word && ' ' + scale_word || '') + ' ' + result : result; } function recurse (result, scaleIdx, first, rest) { if (first == '000' && rest.length === 0) return result; var newResult = add_to_result (result, triplet_to_words (first[0], first[1], first[2]), SCALE_WORD[scaleIdx]); return recurse (newResult, ++scaleIdx, get_first(rest), get_rest(rest)); } return recurse ('', 0, get_first_3(String(int)), get_rest_3(String(int))); }
sumber
sementara sistem ini menggunakan loop for, sistem ini menggunakan bahasa Inggris AS dan cepat, akurat, dan dapat diperluas (Anda dapat menambahkan nilai tak hingga ke var "th" dan nilai itu akan disertakan).
Fungsi ini mengambil 3 kelompok angka mundur sehingga bisa mendapatkan kelompok angka di mana
,
biasanya memisahkan mereka dalam bentuk numerik. Kemudian setiap kelompok tiga angka ditambahkan ke array dengan bentuk kata hanya 3 angka (contoh: seratus dua puluh tiga). Ini kemudian mengambil daftar array baru itu, dan membaliknya lagi, sambil menambahkanth
var dari indeks yang sama ke akhir string.var ones = ['','one ','two ','three ','four ', 'five ','six ','seven ','eight ','nine ','ten ','eleven ','twelve ','thirteen ','fourteen ','fifteen ','sixteen ','seventeen ','eighteen ','nineteen ']; var tens = ['', '', 'twenty ','thirty ','forty ','fifty ', 'sixty ','seventy ','eighty ','ninety ', 'hundred ']; var th = ['', 'thousand ','million ','billion ', 'trillion ']; function numberToWord(number){ var text = ""; var size = number.length; var textList = []; var textListCount = 0; //get each 3 digit numbers for(var i = number.length-1; i >= 0; i -= 3){ //get 3 digit group var num = 0; if(number[(i-2)]){num += number[(i-2)];} if(number[(i-1)]){num += number[(i-1)];} if(number[i]){num += number[i];} //remove any extra 0's from begining of number num = Math.floor(num).toString(); if(num.length == 1 || num < 20){ //if one digit or less than 20 textList[textListCount] = ones[num]; }else if(num.length == 2){ //if 2 digits and greater than 20 textList[textListCount] = tens[num[0]]+ones[num[1]]; }else if(num.length == 3){ //if 3 digits textList[textListCount] = ones[num[0]]+tens[10]+tens[num[1]]+ones[num[2]]; } textListCount++; } //add the list of 3 digit groups to the string for(var i = textList.length-1; i >= 0; i--){ if(textList[i] !== ''){text += textList[i]+th[i];} //skip if the number was 0 } return text; }
sumber
Ubah angka menjadi kata dalam bahasa Prancis menggunakan JavaScript dan html - kata Prancis asli
sumber
Anda dapat memeriksa versi saya dari github. Ini bukan cara yang sulit. Saya menguji ini untuk angka antara 0 dan 9999, tetapi Anda dapat memperluas array jika Anda ingin angka menjadi kata
sumber
Coba kode ini dengan JavaScript yang sesuai dengan mata uang Turki
function dene() { var inpt = document.getElementById("tar1").value; var spt = inpt.split(''); spt.reverse(); var tek = ["", "Bir", "İki", "Üç", "Dört", "Beş", "Altı", "Yedi", "Sekiz", "Dokuz"]; var onlu = ["", "On", "Yirmi", "Otuz", "Kırk", "Elli", "Atmış", "Yetmiş", "Seksen", "Doksan"]; var Yuz = ["", "Yüz", "İkiYüz", "Üçyüz", "DörtYüz", "BeşYüz", "AltıYüz", "YediYüz", "SekizYüz", "DokuzYüz"]; var ska = ["", "", "", "", "Bin", "Milyon", "Milyar", "Trilyon", "Katrilyon", "Kentilyon"]; var i, j; var bas3 = ""; var bas6 = ""; var bas9 = ""; var bas12 = ""; var total; for(i = 0; i < 1; i++) { bas3 += Yuz[spt[i+2]] + onlu[spt[i+1]] + tek[spt[i]]; bas6 += Yuz[spt[i+5]] + onlu[spt[i+4]] + tek[spt[i+3]] + ska[4]; bas9 += Yuz[spt[i+8]] + onlu[spt[i+7]] + tek[spt[i+6]] + ska[5]; bas12 += Yuz[spt[i+11]] + onlu[spt[i+10]] + tek[spt[i+9]] + ska[6]; if(inpt.length < 4) { bas6 = ''; bas9 = ''; } if(inpt.length > 6 && inpt.slice(5, 6) == 0) { bas6 = bas6.replace(/Bin/g, ''); } if(inpt.length < 7) { bas9 = ''; } if(inpt.length > 9 && inpt.slice(1,3) == 000){ bas9 = bas9.replace(/Milyon/g, ''); } if(inpt.length < 10) { bas12 = ''; } } total = bas12 + bas9 + bas6 + bas3; total = total.replace(NaN, ''); total = total.replace(undefined, ''); document.getElementById('demo').innerHTML = total; }
sumber
Ini juga sebagai tanggapan atas posting bagus naomik ! Sayangnya saya tidak memiliki perwakilan untuk memposting di tempat yang benar tetapi saya meninggalkan ini di sini seandainya dapat membantu siapa pun.
Jika Anda membutuhkan formulir tertulis Inggris British, Anda perlu membuat beberapa penyesuaian pada kode. Bahasa Inggris British berbeda dengan bahasa Amerika dalam beberapa hal. Pada dasarnya Anda perlu memasukkan kata 'dan' di dua tempat tertentu.
Situasi pertama dapat diatasi dengan memeriksa 10s dan 1s di metode makeGroup dan menambahkan 'dan' ketika ada.
makeGroup = ([ones,tens,huns]) => { var adjective = this.num(ones) ? ' hundred and ' : this.num(tens) ? ' hundred and ' : ' hundred'; return [ this.num(huns) === 0 ? '' : this.a[huns] + adjective, this.num(ones) === 0 ? this.b[tens] : this.b[tens] && this.b[tens] + '-' || '', this.a[tens+ones] || this.a[ones] ].join('');
};
Kasus kedua lebih rumit. Itu setara dengan
1.100, 0 57 satu juta seratus ribu lima puluh tujuh. 5.000, 0 06 lima juta dan enam
Saya pikir ini dapat diterapkan dalam kode @ naomik melalui penggunaan fungsi filter tetapi saya tidak dapat mengetahui caranya. Pada akhirnya saya memutuskan untuk melakukan perulangan berulang melalui array kata yang dikembalikan dan menggunakan indexOf untuk mencari contoh di mana kata 'ratus' hilang dari elemen terakhir.
sumber
Saya baru saja menulis paisa.js untuk melakukan ini, dan itu menangani lakh dan crores dengan benar juga, bisa memeriksanya. Intinya terlihat seperti ini:
const regulars = [ { 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine' }, { 2: 'twenty', 3: 'thirty', 4: 'forty', 5: 'fifty', 6: 'sixty', 7: 'seventy', 8: 'eighty', 9: 'ninety' } ] const exceptions = { 10: 'ten', 11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen', 15: 'fifteen', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen', 19: 'nineteen' } const partInWords = (part) => { if (parseInt(part) === 0) return const digits = part.split('') const words = [] if (digits.length === 3) { words.push([regulars[0][digits.shift()], 'hundred'].join(' ')) } if (exceptions[digits.join('')]) { words.push(exceptions[digits.join('')]) } else { words.push(digits.reverse().reduce((memo, el, i) => { memo.unshift(regulars[i][el]) return memo }, []).filter(w => w).join(' ')) } return words.filter(w => w.trim().length).join(' and ') }
sumber
Solusi saya didasarkan pada solusi Juan Gaitán untuk mata uang India, bekerja hingga crores.
function valueInWords(value) { let ones = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']; let tens = ['twenty','thirty', 'forty','fifty', 'sixty', 'seventy', 'eighty', 'ninety']; let digit = 0; if (value < 20) return ones[value]; if (value < 100) { digit = value % 10; //remainder return tens[Math.floor(value/10)-2] + " " + (digit > 0 ? ones[digit] : ""); } if (value < 1000) { return ones[Math.floor(value/100)] + " hundred " + (value % 100 > 0 ? valueInWords(value % 100) : ""); } if (value < 100000) { return valueInWords(Math.floor(value/1000)) + " thousand " + (value % 1000 > 0 ? valueInWords(value % 1000) : ""); } if (value < 10000000) { return valueInWords(Math.floor(value/100000)) + " lakh " + (value % 100000 > 0 ? valueInWords(value % 100000) : ""); } return valueInWords(Math.floor(value/10000000)) + " crore " + (value % 10000000 > 0 ? valueInWords(value % 10000000) : ""); }
sumber
function numberToEnglish( n ) { var string = n.toString(), units, tens, scales, start, end, chunks, chunksLen, chunk, ints, i, word, words, and = 'and'; /* Remove spaces and commas */ string = string.replace(/[, ]/g,""); /* Is number zero? */ if( parseInt( string ) === 0 ) { return 'zero'; } /* Array of units as words */ units = [ '', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ]; /* Array of tens as words */ tens = [ '', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ]; /* Array of scales as words */ scales = [ '', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quatttuor-decillion', 'quindecillion', 'sexdecillion', 'septen-decillion', 'octodecillion', 'novemdecillion', 'vigintillion', 'centillion' ]; /* Split user argument into 3 digit chunks from right to left */ start = string.length; chunks = []; while( start > 0 ) { end = start; chunks.push( string.slice( ( start = Math.max( 0, start - 3 ) ), end ) ); } /* Check if function has enough scale words to be able to stringify the user argument */ chunksLen = chunks.length; if( chunksLen > scales.length ) { return ''; } /* Stringify each integer in each chunk */ words = []; for( i = 0; i < chunksLen; i++ ) { chunk = parseInt( chunks[i] ); if( chunk ) { /* Split chunk into array of individual integers */ ints = chunks[i].split( '' ).reverse().map( parseFloat ); /* If tens integer is 1, i.e. 10, then add 10 to units integer */ if( ints[1] === 1 ) { ints[0] += 10; } /* Add scale word if chunk is not zero and array item exists */ if( ( word = scales[i] ) ) { words.push( word ); } /* Add unit word if array item exists */ if( ( word = units[ ints[0] ] ) ) { words.push( word ); } /* Add tens word if array item exists */ if( ( word = tens[ ints[1] ] ) ) { words.push( word ); } /* Add 'and' string after units or tens integer if: */ if( ints[0] || ints[1] ) { /* Chunk has a hundreds integer or chunk is the first of multiple chunks */ if( ints[2] || ! i && chunksLen ) { words.push( and ); } } /* Add hundreds word if array item exists */ if( ( word = units[ ints[2] ] ) ) { words.push( word + ' hundred' ); } } } return words.reverse().join( ' ' ); } // - - - - - Tests - - - - - - function test(v) { var sep = ('string'==typeof v)?'"':''; console.log("numberToEnglish("+sep + v.toString() + sep+") = "+numberToEnglish(v)); } test(2); test(721); test(13463); test(1000001); test("21,683,200,000,621,384");
sumber
Bagi mereka yang mencari konvensi penamaan kekaisaran / Inggris.
Berdasarkan jawaban @ Salman
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']; function inWords (num) { if ((num = num.toString()).length > 12) return 'overflow'; n = ('00000000000' + num).substr(-12).match(/^(\d{3})(\d{3})(\d{3})(\d{1})(\d{2})$/); if (!n) return; var str = ''; str += (n[1] != 0) ? (Number(n[1]) > 99 ? this.a[Number(n[1][0])] + 'hundred ' : '') + (a[Number(n[1])] || b[n[1][1]] + ' ' + a[n[1][2]]) + 'billion ' : ''; str += (n[2] != 0) ? (Number(n[2]) > 99 ? this.a[Number(n[2][0])] + 'hundred ' : '') + (a[Number(n[2])] || b[n[2][1]] + ' ' + a[n[2][2]]) + 'million ' : ''; str += (n[3] != 0) ? (Number(n[3]) > 99 ? this.a[Number(n[3][0])] + 'hundred ' : '') + (a[Number(n[3])] || b[n[3][1]] + ' ' + a[n[3][2]]) + 'thousand ' : ''; str += (n[4] != 0) ? (a[Number(n[4])] || b[n[4][0]] + ' ' + a[n[4][1]]) + 'hundred ' : ''; str += (Number(n[5]) !== 0) ? ((str !== '') ? 'and ' : '') + (this.a[Number(n[5])] || this.b[n[5][0]] + ' ' + this.a[n[5][1]]) + '' : ''; return str; } document.getElementById('number').onkeyup = function () { document.getElementById('words').innerHTML = inWords(document.getElementById('number').value); };
<span id="words"></span> <input id="number" type="text" />
sumber
var units = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; var tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]; function convert7digitIntoWords(num) { var remainder = num % 1000000 var hun = num - remainder; var div = Math.floor(num / 100000); if (remainder !== 0) return (convert2digitIntoWords(div) + " lakhs " + convert5digitIntoWords(remainder % 100000)) else return (convert2digitIntoWords(div) + " lakhs ") } function convert6digitIntoWords(num) { var remainder = num % 100000 var hun = num - remainder; var div = Math.floor(num / 100000); if (remainder !== 0) return (units[div] + " lakh " + convert5digitIntoWords(remainder)) else return (units[div] + " lakh ") } function convert5digitIntoWords(num) { var remainder = num % 10000 var hun = num - remainder; var div = Math.floor(num / 1000); if (remainder !== 0) return (convert2digitIntoWords(div) + " thousand " + convert3digitIntoWords(remainder % 1000)) else return (convert2digitIntoWords(div) + " thousand") } function convert4digitIntoWords(num) { var remainder = num % 1000 var hun = num - remainder; var div = Math.floor(num / 1000); if (remainder !== 0) return (units[div] + " thousand " + convert3digitIntoWords(remainder)) else return (units[div] + " thousand") } function convert3digitIntoWords(num) { var remainder = num % 100 var hun = num - remainder; var div = Math.floor(num / 100); if (remainder !== 0) return (units[div] + " hundred " + convert2digitIntoWords(remainder)) else return (units[div] + " hundred ") } function convert2digitIntoWords(num) { var remainder = num % 10; var div = Math.floor(num / 10); return (tens[div] + " " + convertNumIntoWords(remainder)); } function convertNumIntoWords(num) { switch (("" + num).length) { case 1: return units[num]; case 2: return convert2digitIntoWords(num); case 3: return convert3digitIntoWords(num) case 4: return convert4digitIntoWords(num) case 5: return convert5digitIntoWords(num) case 6: return convert6digitIntoWords(num) case 7: return convert7digitIntoWords(num) default: return "cannot be converted" } } console.log(convertNumIntoWords(3445125));
sumber
Saya telah membuat fungsi yang disesuaikan
ntsConvert()
untuk mengubah angka menjadi katafunction ntsConvert(value) { let input = String(value).split(''); let mapData = { "0": "Zero", "1": "One", "2": "Two", "3": "Three", "4": "Four", "5": "Five", "6": "Six", "7": "Seven", "8": "Eight", "9": "Nine" }; let output = ''; var tempArray = [] for (let i = 0; i < input.length; i++) { tempArray.push(mapData[input[i]]) } output = tempArray.join(' '); return output; } console.log(ntsConvert(12345)) // 'One Two Three Four Five'
sumber