# Robson ▸ Little Red Book ▸ Sum of money in words

## Chapter 6 - Question 9

Given as input a number of pounds (less than 1000) and a number of pence (less than 100), output the equivalent sum in words, as on a cheque.

### Solution 1

This PHP script uses my Number To Words function:

`<?` `    function number_to_words(\$n)` `    {` `        \$number = array(` `            'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven',` `            'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen',` `            'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'` `            );` `            ` `        \$tens = array(` `            'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty',` `            'sixty', 'seventy', 'eighty', 'ninety'` `        );` ` ` `        if (!\$n)` `            \$output = 'zero';` `        else if (\$n == 1000)` `            \$output = 'one thousand';` `        else` `        {` `            if (\$n > 99 && \$n < 1000)` `            {` `                \$output = \$number[intval(\$n/100)] . ' hundred';` `                \$n %= 100;` `                if (\$n)` `                    \$output .= ' and ';` `            }` `            if (\$n >= 1 && \$n <= 19)` `                \$output .= \$number[\$n];` `            else if (\$n)` `            {` `                \$output .= \$tens[intval(\$n/10)];` `                if (\$n % 10)` `                    \$output .= ' ' . \$number[\$n % 10];` `            }` `        }` `        return \$output;` `    }` `    ` `    // make up some values` `    \$pounds = mt_rand(1, 1000);` `    \$pence = mt_rand(1, 100);` `    ` `    // show the amount in currency format` `    echo sprintf(, \$pounds, \$pence);` `    // show the amount in words` `    echo '<br />' . ucfirst(number_to_words(\$pounds)) . ' pounds and ' . number_to_words(\$pence) . ' pence';` `?>`

Which produces:

£589.77
Five hundred and eighty nine pounds and seventy seven pence

## Log

• August 14, 2005 - Added solution 1.
© 2004-20 robson | cc unless stated