Last active
December 2, 2018 08:36
Converts Numbers to Words
This file contains hidden or 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
// Convert numbers to words | |
// copyright 25th July 2006, by Stephen Chapman http://javascript.about.com | |
// permission to use this Javascript on your web page is granted | |
// provided that all of the code (including this copyright notice) is | |
// used exactly as shown (you can change the numbering system if you wish) | |
/* | |
Documentation: Usage | |
===================== | |
1. Import the javascript file: | |
<script src="numbertoword.js"></script> | |
2. Call the function toWords(number) passing a number to it: | |
<script> | |
var number=1000; | |
var Inwords=toWords(number); | |
<script> | |
*/ | |
// American Numbering System | |
var th = ['', 'thousand', 'million', 'billion', 'trillion']; | |
// uncomment this line for English Number System | |
// var th = ['','thousand','million', 'milliard','billion']; | |
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) { | |
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, ' '); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment