Note that there are some explanatory texts on larger screens.

plurals
  1. POconvert an word number to numaric equivalent
    text
    copied!<p>I need to convert a American word number to number after extracting from an string.I have given a try here <a href="http://jsfiddle.net/golupant/fT2tk/" rel="nofollow">http://jsfiddle.net/golupant/fT2tk/</a> </p> <p>i.e <strong>I want to convert ten thousand four hundred forty to its numeric equivalent -- 10440.</strong> </p> <pre><code>function word2numberConverter ( wordNumber) { wordNumber = wordNumber.toLowerCase(); //different notations under hundred var underTen = { 'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9 }; var underHundred = { 'ten': 10, 'eleven': 11, 'twelve': 12, 'thirteen': 13, 'fourteen': 14, 'fifteen': 15, 'sixteen': 16, 'seventeen': 17, 'eighteen': 18, 'nineteen': 19, 'twenty': 20, 'thirty': 30, 'forty': 40, 'fifty': 50, 'sixty': 60, 'seventy': 70, 'eighty': 80, 'ninety': 90 }; //different magnitude each after the increament 10 pow 3 var magnitude = { 'thousand': '10^3', 'million':'10^6', 'billion':'10^9', 'trillion':'10^12', 'quadrillion':'10^15', 'quintillion':'10^18', 'sextillion':'10^21', 'septillion':'10^24', 'octillion':'10^27', 'nonillion':'10^30', 'decillion':'10^33', 'undecillion':'10^36', 'duodecillion':'10^39', 'tredecillion':'10^42', 'quattuordecillion':'10^45', 'quindecillion':'10^48','sexdecillion':'10^51', 'septendecillion':'10^54', 'octadecillion':'10^57', 'novemdecillion':'10^60', 'vigintillion':'10^63', }; //window.console&amp;&amp;console.log(wordNumber); var wordnumElements = wordNumber.split(/[\s-]+/); //alert('++++'+wordnumElements); var num = 0; var tempnum = 0; var isUnderHundred = 0; var isHundred = 0; var isMagnitude = 0; var isUnderTen = 0; var isValidNum = 1; var element = ''; var wordnumElementsLength = wordnumElements.length; for (var i=0;i &lt; wordnumElementsLength; i++) { element = wordnumElements[i]; window.console&amp;&amp;console.log(element); //wordnumElements.forEach(function( element ) { if(!isValidNum) { //if invalid number then return break; } var temp = underTen[element]; if(temp != null) { if(isUnderTen) { //can't be a valid number isValidNum = 0; } else { tempnum = tempnum + temp; isUnderTen =1; //reset isHundred , isUnderHundred and isMagnitude isHundred = 0; isUnderHundred = 0; isMAgnitude = 0; } } else { var temp = underHundred[element]; if(temp != null) { if(isUnderHundred){ //can't be a valid number isValidNum = 0; } else { tempnum = tempnum + temp; isUnderHundred = 1; //reset isHundred , isUnderTen and isMagnitude isUnderTen = 0; isHundred = 0; isMagnitude = 0; } } else { if ( element == "hundred" ) { if(isHundred || isUnderHundred) { // there can never be underHundred string before valid american wordnumber like one thousand forty hundred is invalid //not a valid number isValidNum = 0; } else { isHundred =1; //reset underHundred and isMagnitude isUnderHundred = 0; isMagnitude = 0; isUnderTen = 0; } if(!tempnum) { // to give support for one thousand hundred forty as 1140 tempnum = 1; } tempnum = tempnum *100; } else { temp = magnitude[element]; if(temp ){ if(isMagnitude == 1) { //not a valid number isValidNum = 0; } else { isMagnitude = 1; //reset isUnderHundred and isHundred isUnderHundred = 0; isHundred = 0; isUnderTen = 0; } var val = temp.split(/\^/); temp = Math.pow(val[0],val[1]); window.console&amp;&amp;console.log('num--'+num); window.console&amp;&amp;console.log('tempnum--'+tempnum); window.console&amp;&amp;console.log('temp--'+temp) if( temp != null) { if(num &amp;&amp; isMagnitude &amp;&amp; temp &gt; num) { window.console&amp;&amp;console.log('i m --&gt; num * temp + tempnum===&gt;'+num+'--'+temp+'--'+tempnum); num = (num + tempnum)* temp; } else { window.console&amp;&amp;console.log('i m addition--&gt; num + tempnum * temp===&gt;'+num+'--'+tempnum+'--'+temp); num = num + tempnum * temp; } tempnum = 0; } else { isValidWordNum = 0; } } } } } window.console&amp;&amp;console.log('enum--'+num); window.console&amp;&amp;console.log('etempnum--'+tempnum); window.console&amp;&amp;console.log('etemp--'+temp); } num = num + tempnum; alert("final num-"+num); if(!isValidNum) { return wordNumber; } else { return num; } } </code></pre> <p><a href="http://jsfiddle.net/golupant/LFrm7/12/" rel="nofollow">http://jsfiddle.net/golupant/LFrm7/12/</a> -- works perfectly if number gose downword. mean the highest magnitude come at the first place then smaller ...</p> <p>In <a href="http://jsfiddle.net/golupant/fT2tk/" rel="nofollow">http://jsfiddle.net/golupant/fT2tk/</a> I have tried to take care of numbers like </p> <blockquote> <p>"two hundred five million forty billion one thousand seven hundred fifty"</p> </blockquote> <p>I is working till some extant but not fully correct. <strong>I just want to do like google does</strong>.</p> <p>Please do google "two hundred five million forty billion one thousand seven hundred fifty -1". You will come to know what I want.</p> <p>Can somebody help me out to do this? Although I want in javascript but I am OK in other language too.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload