Created
April 20, 2018 02:38
-
-
Save ajilo297/ee9dda1edf4945e4deb9f8d099057d30 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var convertINR = (currency) => { | |
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']; | |
if ((currency = currency.toString()).length > 9) return 'overflow'; | |
n = ('000000000' + currency).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; | |
} | |
var convertEuro = (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 arguemnt 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( ' ' ); | |
} | |
var rupeeString = convertINR(350000); | |
var euroString = convertEuro(46000000000); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment