Skip to content

Instantly share code, notes, and snippets.

@oshanz
Last active August 29, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oshanz/9929292 to your computer and use it in GitHub Desktop.
Save oshanz/9929292 to your computer and use it in GitHub Desktop.
Convert Numbers to Words
//http://www.easysurf.cc/cnvert18.htm
function GetNumber2d(form) {
var gf = ""
var gg = ""
var gh = ""
var gi = ""
var gj = ""
var gc = "zero"
var dd = ""
var cc = ""
var sNumber = form.txtNumber.value;
var sNumbec = form.txtNumbe2.value;
sNumber = stripBad(sNumber);
sNumber = parseInt(sNumber, 10);
var sNum2 = String(sNumber);
sNumbec = stripBad(sNumbec);
sNumbec = parseInt(sNumbec, 10);
var sNumc = String(sNumbec);
if (sNumber == 1){dd = " dollar "}
else {dd = " dollars "}
if (sNumbec == 1){cc = " cent"}
else {cc = " cents"}
if (sNumbec < 1){gc = "zero"}
if (sNumc=="") {gc = "zero"}
if (sNumc > 0) {gc = hto(sNumc)}
var j = sNum2.length
var hNum2 = sNum2.substring((j-3),((j-3)+3))
if (hNum2 > 0) {
gf = hto(hNum2) + ""
}
var tNum2 = sNum2.substring((j-6),(j-6)+3)
if (tNum2 > 0) {
gg = hto(tNum2) + " thousand "
}
var mNum2 = sNum2.substring((j-9),(j-9)+3)
if (mNum2 > 0) {
gh = hto(mNum2) + " million "
}
var bNum2 = sNum2.substring((j-12),(j-12)+3)
if (bNum2 > 0) {
gi = hto(bNum2) + " billion "
}
var trNum2 = sNum2.substring((j-15),(j-15)+3)
if (trNum2 > 0) {
gj = hto(trNum2) + " trillion "
}
if (sNumber < 1){
gf = "zero"
}
if (j > 15){
gj = " Your number is too big for me to spell";
gi = "";
gh = "";
gg = "";
gf = "";
}
var dds = gj + gi + gh + gg + gf;
if (dds == ""){dds = "zero"}
form.txtResult.value= " " + dds + dd + " and " + gc + " " + cc}
function GetNumber2e(form) {
var gf = ""
var gg = ""
var gh = ""
var gi = ""
var gj = ""
var gc = "zero"
var dd = ""
var cc = ""
var sNumber = form.txtNumber.value;
var sNumbec = form.txtNumbe2.value;
sNumber = stripBad(sNumber);
sNumber = parseInt(sNumber, 10);
var sNum2 = String(sNumber);
sNumbec = stripBad(sNumbec);
sNumbec = parseInt(sNumbec, 10);
var sNumc = String(sNumbec);
dd = " euro ";
cc = " cent";
if (sNumbec < 1){gc = "zero"}
if (sNumc=="") {gc = "zero"}
if (sNumc > 0) {gc = hto(sNumc)}
var j = sNum2.length
var hNum2 = sNum2.substring((j-3),((j-3)+3))
if (hNum2 > 0) {
gf = hto(hNum2) + ""
}
var tNum2 = sNum2.substring((j-6),(j-6)+3)
if (tNum2 > 0) {
gg = hto(tNum2) + " thousand "
}
var mNum2 = sNum2.substring((j-9),(j-9)+3)
if (mNum2 > 0) {
gh = hto(mNum2) + " million "
}
var bNum2 = sNum2.substring((j-12),(j-12)+3)
if (bNum2 > 0) {
gi = hto(bNum2) + " billion "
}
var trNum2 = sNum2.substring((j-15),(j-15)+3)
if (trNum2 > 0) {
gj = hto(trNum2) + " trillion "
}
if (sNumber < 1){
gf = "zero"
}
if (j > 15){
gj = " Your number is too big for me to spell";
gi = "";
gh = "";
gg = "";
gf = "";
}
var dds = gj + gi + gh + gg + gf;
if (dds == ""){dds = "zero"}
form.txtResult.value= " " + dds + dd + " and " + gc + " " + cc}
function GetNumber2(form) {
var gf = ""
var gg = ""
var gh = ""
var gi = ""
var gj = ""
var sNumber = form.txtNumber.value;
sNumber = stripBad(sNumber);
sNumber = parseInt(sNumber, 10);
var sNum2 = String(sNumber);
var j = sNum2.length
var hNum2 = sNum2.substring((j-3),((j-3)+3))
if (hNum2 > 0) {
gf = hto(hNum2) + ""
}
var tNum2 = sNum2.substring((j-6),(j-6)+3)
if (tNum2 > 0) {
gg = hto(tNum2) + " thousand "
}
var mNum2 = sNum2.substring((j-9),(j-9)+3)
if (mNum2 > 0) {
gh = hto(mNum2) + " million "
}
var bNum2 = sNum2.substring((j-12),(j-12)+3)
if (bNum2 > 0) {
gi = hto(bNum2) + " billion "
}
var trNum2 = sNum2.substring((j-15),(j-15)+3)
if (trNum2 > 0) {
gj = hto(trNum2) + " trillion "
}
if (sNumber < 1){
gf = "zero"
}
if (j > 15){
gj = " Your number is too big for me to spell";
gi = "";
gh = "";
gg = "";
gf = "";
}
form.txtResult.value= " " + gj + gi + gh + gg + gf }
function GetNumber3(form) {
var gf = ""
var gg = ""
var gh = ""
var gi = ""
var gj = ""
var gs = "s"
var n3 = new Array('', 'tenth', 'hundredth', 'thousandth', 'ten-thousandth', 'hundred-thousandth',
'millionth', 'ten-millionth', 'hundred-millionth', 'billionth', 'ten-billionth', 'hundred-billionth',
'trillionth', 'ten-trillionth', 'hundred-trillionth')
var sNumber = form.txtNumber.value;
sNumber = stripBad2(sNumber);
var jz = sNumber.length
sNumber = parseInt(sNumber, 10);
if (sNumber == 1) {
gs = ""}
var sNum2 = String(sNumber);
var j = sNum2.length
var hNum2 = sNum2.substring((j-3),((j-3)+3))
if (hNum2 > 0) {
gf = hto(hNum2) + ""
}
var tNum2 = sNum2.substring((j-6),(j-6)+3)
if (tNum2 > 0) {
gg = hto(tNum2) + " thousand "
}
var mNum2 = sNum2.substring((j-9),(j-9)+3)
if (mNum2 > 0) {
gh = hto(mNum2) + " million "
}
var bNum2 = sNum2.substring((j-12),(j-12)+3)
if (bNum2 > 0) {
gi = hto(bNum2) + " billion "
}
var trNum2 = sNum2.substring((j-15),(j-15)+3)
if (trNum2 > 0) {
gj = hto(trNum2) + " trillion "
}
if (sNumber < 1){
gf = "zero"
}
if (jz > 14){
gj = " Your number is too small for me to spell";
gi = "";
gh = "";
gg = "";
gf = "";
gs = "";
n3[jz]= "";
}
form.txtResult.value= " " + gj + gi + gh + gg + gf + " " + n3[jz] + gs}
function GetNumber5(form) {
var gf = "";
var gg = "";
var gh = "";
var gi = "";
var gj = "";
var sNumber = form.txtNumber.value;
sNumber = stripBad(sNumber);
sNumber = parseInt(sNumber, 10);
var sNum2 = String(sNumber);
var j = sNum2.length;
var hNum2 = sNum2.substring((j-3),((j-3)+3))
if (hNum2 > 0) {
gf = hto(hNum2) + ""
}
var tNum2 = sNum2.substring((j-6),(j-6)+3)
if (tNum2 > 0) {
gg = hto(tNum2) + " thousand "
}
var mNum2 = sNum2.substring((j-9),(j-9)+3)
if (mNum2 > 0) {
gh = hto(mNum2) + " million "
}
var bNum2 = sNum2.substring((j-12),(j-12)+3)
if (bNum2 > 0) {
gi = hto(bNum2) + " billion "
}
var trNum2 = sNum2.substring((j-15),(j-15)+3)
if (trNum2 > 0) {
gj = hto(trNum2) + " trillion "
}
if (sNumber < 1){
gf = "zero"
}
if (j > 15){
gj = " Your number is too big for me to spell";
gi = "";
gh = "";
gg = "";
gf = "";
}
var df = "";
var dg = "";
var dh = "";
var di = "";
var dj = "";
var gs = "s";
var n3 = new Array('', 'tenth', 'hundredth', 'thousandth', 'ten-thousandth', 'hundred-thousandth',
'millionth', 'ten-millionth', 'hundred-millionth', 'billionth', 'ten-billionth', 'hundred-billionth',
'trillionth', 'ten-trillionth', 'hundred-trillionth')
var dNumber = form.txtNumbe2.value;
dNumber = stripBad2(dNumber);
var jz = dNumber.length
dNumber = parseInt(dNumber, 10);
if (dNumber == 1) {
gs = ""}
var dNum2 = String(dNumber);
var j = dNum2.length
var hNum2 = dNum2.substring((j-3),((j-3)+3))
if (hNum2 > 0) {
df = hto(hNum2) + ""
}
var tNum2 = dNum2.substring((j-6),(j-6)+3)
if (tNum2 > 0) {
dg = hto(tNum2) + " thousand "
}
var mNum2 = dNum2.substring((j-9),(j-9)+3)
if (mNum2 > 0) {
dh = hto(mNum2) + " million "
}
var bNum2 = dNum2.substring((j-12),(j-12)+3)
if (bNum2 > 0) {
di = hto(bNum2) + " billion "
}
var trNum2 = dNum2.substring((j-15),(j-15)+3)
if (trNum2 > 0) {
dj = hto(trNum2) + " trillion "
}
if (dNumber < 1){
df = "zero"
}
if (jz > 14){
dj = " Your number is too small for me to spell";
di = "";
dh = "";
dg = "";
df = "";
gs = "";
n3[jz]= "";
}
form.txtResult.value= " " + gj + gi + gh + gg + gf + " and " + dj + di + dh + dg + df + " " + n3[jz] + gs}
function GetNumber4(form) {
var gf = ""
var gg = ""
var gh = ""
var gi = ""
var gj = ""
var sNumber = form.txtNumber.value;
sNumber = stripBad(sNumber);
sNumber = parseInt(sNumber, 10);
var sNum2 = String(sNumber);
var j = sNum2.length
var hNum2 = sNum2.substring((j-3),((j-3)+3))
if (hNum2 > 0) {
gf = ohto(hNum2) + ""
}
var tNum2 = sNum2.substring((j-6),(j-6)+3)
if ((tNum2 > 0)&&(hNum2 > 0)) {
gg = hto(tNum2) + " thousand "
}
else if ((tNum2 > 0)&&(hNum2 == 0)) {
gg = hto(tNum2) + " thousandth "
}
var mNum2 = sNum2.substring((j-9),(j-9)+3)
var tNum6 = sNum2.substring((j-6),(j-6)+6)
if ((mNum2 > 0)&&(tNum6 > 0)) {
gh = hto(mNum2) + " million "
}
else if ((mNum2 > 0)&&(tNum6 == 0)) {
gh = hto(mNum2) + " millionth "
}
var bNum2 = sNum2.substring((j-12),(j-12)+3)
var tNum9 = sNum2.substring((j-9),(j-9)+9)
if ((bNum2 > 0)&&(tNum9 > 0)) {
gi = hto(bNum2) + " billion "
}
else if ((bNum2 > 0)&&(tNum9 == 0)) {
gi = hto(bNum2) + " billionth "
}
var trNum2 = sNum2.substring((j-15),(j-15)+3)
var tNum12 = sNum2.substring((j-12),(j-12)+12)
if ((trNum2 > 0)&&(tNum12 > 0)) {
gj = hto(trNum2) + " trillion "
}
else if ((trNum2 > 0)&&(tNum12 == 0)) {
gj = hto(trNum2) + " trillionth "
}
if (sNumber < 1){
gf = "zero cannot be an ordinal number"
}
if (j > 15){
gj = " Your number is too big for me to spell";
gi = "";
gh = "";
gg = "";
gf = "";
}
form.txtResult.value= " " + gj + gi + gh + gg + gf }
function stripBad(string) {
for (var i=0, output='', valid="0123456789."; i<string.length; i++)
if (valid.indexOf(string.charAt(i)) != -1)
output += string.charAt(i)
return output;
}
function stripBad2(string) {
for (var i=0, output='', valid="0123456789"; i<string.length; i++)
if (valid.indexOf(string.charAt(i)) != -1)
output += string.charAt(i)
return output;
}
function hto(ff){
var sNum3 = ""
var p1=""
var p2=""
var p3=""
var hy=""
var n1 = new Array
('', 'one', 'two', 'three', 'four', 'five', 'six',
'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve',
'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen',
'eighteen', 'nineteen')
var n2 = new Array('', '', 'twenty', 'thirty', 'forty',
'fifty', 'sixty', 'seventy', 'eighty', 'ninety')
sNum3 = ff
var j = sNum3.length
var h3 = sNum3.substring((j-3),(j-3)+1)
if (h3 > 0) {
p3= n1[h3] + " hundred "}
else {p3=""}
var t2 = parseInt(sNum3.substring((j-2),(j-2)+1), 10)
var u1 = parseInt(sNum3.substring((j-1),(j-1)+1), 10)
var tu21 = parseInt(sNum3.substring((j-2),(j-2)+2), 10)
if (tu21 == 0) {
p1="";
p2="";
}
else if ((t2 < 1) && (u1 > 0)) {
p2="";
p1= n1[u1]
}
else if (tu21 < 20) {
p2="";
p1= n1[tu21]
}
else if ((t2 > 1) && (u1 == 0)) {
p2= n2[t2]
p1=""
}
else {
p2= n2[t2] + "-"
p1=n1[u1]
}
ff = p3 + p2 + p1
return ff;
}
function ohto(ff){
var sNum3 = ""
var p1=""
var p2=""
var p3=""
var hy=""
var n1 = new Array
('', 'first', 'second', 'third', 'fourth', 'fifth', 'sixth',
'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth',
'thirteenth', 'fourteenth', 'fifteenth', 'sixteenth', 'seventeenth',
'eighteenth', 'nineteenth')
var n2 = new Array('', '', 'twentieth', 'thirtieth', 'fortieth',
'fiftieth', 'sixtieth', 'seventieth', 'eightieth', 'ninetieth')
var n3 = new Array('', '', 'twenty', 'thirty', 'forty',
'fifty', 'sixty', 'seventy', 'eighty', 'ninety')
var n4 = new Array
('', 'one', 'two', 'three', 'four', 'five', 'six',
'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve',
'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen',
'eighteen', 'nineteen')
sNum3 = ff
var j = sNum3.length
var h3 = sNum3.substring((j-3),(j-3)+1)
if (h3 > 0) {
p3= n4[h3] + " hundred "}
else {p3=""}
var t2 = parseInt(sNum3.substring((j-2),(j-2)+1), 10)
var u1 = parseInt(sNum3.substring((j-1),(j-1)+1), 10)
var tu21 = parseInt(sNum3.substring((j-2),(j-2)+2), 10)
if (tu21 == 0) {
p1="";
p2="";
p3= n4[h3] + " hundredth "
}
else if ((t2 < 1) && (u1 > 0)) {
p2="";
p1= n1[u1]
}
else if (tu21 < 20) {
p2="";
p1= n1[tu21]
}
else if ((t2 > 1) && (u1 == 0)) {
p2= n2[t2]
p1=""
}
else {
p2= n3[t2] + "-"
p1=n1[u1]
}
ff = p3 + p2 + p1
return ff;
}
function gesult(ff){
if (Number.prototype.toFixed) {
ff = ff.toFixed(2);
ff = parseFloat(ff);
}
else {
var leftSide = Math.floor(ff);
var rightSide = ff - leftSide;
ff = leftSide + Math.round(rightSide *1e+14)/1e+14;
}
return comma(ff);
}
function comma(num) {
var n = Math.floor(num);
var myNum = num + "";
var myDec = ""
if (myNum.indexOf('.',0) > -1){
myDec = myNum.substring(myNum.indexOf('.',0),myNum.length);
}
var arr=new Array('0'), i=0;
while (n>0)
{arr[i]=''+n%1000; n=Math.floor(n/1000); i++;}
arr=arr.reverse();
for (var i in arr) if (i>0)
while (arr[i].length<3) arr[i]='0'+arr[i];
return arr.join() + myDec;
}
echo convert_number_to_words(123456789);
// one hundred and twenty-three million, four hundred and fifty-six thousand, seven hundred and eighty-nine
echo convert_number_to_words(123456789.123);
// one hundred and twenty-three million, four hundred and fifty-six thousand, seven hundred and eighty-nine point one two three
echo convert_number_to_words(-1922685.477);
// negative one million, nine hundred and twenty-two thousand, six hundred and eighty-five point four seven seven
// float rounding can be avoided by passing the number as a string
echo convert_number_to_words(123456789123.12345); // rounds the fractional part
// one hundred and twenty-three billion, four hundred and fifty-six million, seven hundred and eighty-nine thousand, one hundred and twenty-three point one two
echo convert_number_to_words('123456789123.12345'); // does not round
// one hundred and twenty-three billion, four hundred and fifty-six million, seven hundred and eighty-nine thousand, one hundred and twenty-three point one two three four five
function convert_number_to_words($number) {
$hyphen = '-';
$conjunction = ' and ';
$separator = ', ';
$negative = 'negative ';
$decimal = ' point ';
$dictionary = array(
0 => 'zero',
1 => 'one',
2 => 'two',
3 => 'three',
4 => 'four',
5 => 'five',
6 => 'six',
7 => 'seven',
8 => 'eight',
9 => 'nine',
10 => 'ten',
11 => 'eleven',
12 => 'twelve',
13 => 'thirteen',
14 => 'fourteen',
15 => 'fifteen',
16 => 'sixteen',
17 => 'seventeen',
18 => 'eighteen',
19 => 'nineteen',
20 => 'twenty',
30 => 'thirty',
40 => 'fourty',
50 => 'fifty',
60 => 'sixty',
70 => 'seventy',
80 => 'eighty',
90 => 'ninety',
100 => 'hundred',
1000 => 'thousand',
1000000 => 'million',
1000000000 => 'billion',
1000000000000 => 'trillion',
1000000000000000 => 'quadrillion',
1000000000000000000 => 'quintillion'
);
if (!is_numeric($number)) {
return false;
}
if (($number >= 0 && (int) $number < 0) || (int) $number < 0 - PHP_INT_MAX) {
// overflow
trigger_error(
'convert_number_to_words only accepts numbers between -' . PHP_INT_MAX . ' and ' . PHP_INT_MAX,
E_USER_WARNING
);
return false;
}
if ($number < 0) {
return $negative . convert_number_to_words(abs($number));
}
$string = $fraction = null;
if (strpos($number, '.') !== false) {
list($number, $fraction) = explode('.', $number);
}
switch (true) {
case $number < 21:
$string = $dictionary[$number];
break;
case $number < 100:
$tens = ((int) ($number / 10)) * 10;
$units = $number % 10;
$string = $dictionary[$tens];
if ($units) {
$string .= $hyphen . $dictionary[$units];
}
break;
case $number < 1000:
$hundreds = $number / 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment