This function takes a numeric currency value - say 34.87, and converts it to a string as in Thirty Four Dollars and Eighty Seven Cents. Handles amounts up to 999 million. Handles singular and plural "dollars" and "cents". Decently documented and easy to follow.
PHP Example :
<?php
//*************************************************************
// this function converts an amount into alpha words
// with the words dollars and cents. Pass it a float.
// Example: $3.77 = Three Dollars and Seventy Seven Cents
// works up to 999,999,999.99 dollars - Great for checks
//*************************************************************
function makewords($numval)
{
$moneystr = "";
// handle the millions
$milval = (integer)($numval / 1000000);
if($milval > 0)
{
$moneystr = getwords($milval) . " Million";
}
// handle all the rest of the dollars
$workval = $workval - ($thouval * 1000); // get rid of thousands
$tensval = (integer)($workval);
if ($moneystr == "")
{
if ($tensval > 0)
{
$moneystr = getwords($tensval);
}
else
{
$moneystr = "Zero";
}
}
else // non zero values in hundreds and up
{
$workword = getwords($tensval);
$moneystr .= " " . $workword;
}
// plural or singular 'dollar'
$workval = (integer)($numval);
if ($workval == 1)
{
$moneystr .= " Dollar And ";
}
else
{
$moneystr .= " Dollars And ";
}
// do the pennies - use printf so that we get the
// same rounding as printf
$workstr = sprintf("%3.2f",$numval); // convert to a string
$intstr = substr($workstr,strlen - 2, 2);
$workint = (integer)($intstr);
if ($workint == 0)
{
$moneystr .= "Zero";
}
else
{
$moneystr .= getwords($workint);
}
if ($workint == 1)
{
$moneystr .= " Cent";
}
else
{
$moneystr .= " Cents";
}
// done - let's get out of here!
return $moneystr;
}
//*************************************************************
// this function creates word phrases in the range of 1 to 999.
// pass it an integer value
//*************************************************************
function getwords($workval)
{
$numwords = array(
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 => "Eightteen",
19 => "Nineteen",
20 => "Twenty",
30 => "Thirty",
40 => "Forty",
50 => "Fifty",
60 => "Sixty",
70 => "Seventy",
80 => "Eighty",
90 => "Ninety");
// handle units and teens
$workstr = "";
$tensval = $workval - ($hundval * 100); // dump the 100's
if (($tensval < 20) && ($tensval > 0))// do the teens
{
$workstr = $numwords[$tensval];
}
else // got to break out the units and tens
{
$tempval = ((integer)($tensval / 10)) * 10; // dump the units
$workstr = $numwords[$tempval]; // get the tens
$unitval = $tensval - $tempval; // get the unit value
if ($unitval > 0)
{
$workstr .= " " . $numwords[$unitval];
}
}
// join all the parts together and leave
if ($workstr != "")
{
if ($retstr != "")
{
$retstr .= " " . $workstr;
}
else
{
$retstr = $workstr;
}
}
return $retstr;
}
$floatval = 42341.55;
$myresult = makewords($floatval);
echo "$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 0.63;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 1.00;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 0.01;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 76842341.55;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 0.00;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 11.04;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 456.78;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 76.97;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
$floatval = 777777777.77;
$myresult = makewords($floatval);
echo "<br>$myresult<br>";
printf("The value is %0.2f<br>",$floatval);
?>