Write a JavaScript program that converts a non-negative integer number to its English representation.
Using Javascript
function test(n) {
if (n < 0)
return false;
// Arrays to hold words for single-digit, double-digit, and below-hundred numbers
single_digit = ['', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine']
double_digit = ['Ten', 'Eleven', 'Twelve', 'Thirteen', 'Fourteen', 'Fifteen', 'Sixteen', 'Seventeen', 'Eighteen', 'Nineteen']
below_hundred = ['Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety']
if (n === 0) return 'Zero';
// Recursive function to translate the number into words
function translate(n) {
let word = "";
if (n < 10) {
word = single_digit[n] + ' ';
} else if (n < 20) {
word = double_digit[n - 10] + ' ';
} else if (n < 100) {
let rem = translate(n % 10);
word = below_hundred[(n - n % 10) / 10 - 2] + ' ' + rem;
} else if (n < 1000) {
word = single_digit[Math.trunc(n / 100)] + ' Hundred ' + translate(n % 100);
} else if (n < 1000000) {
word = translate(parseInt(n / 1000)).trim() + ' Thousand ' + translate(n % 1000);
} else if (n < 1000000000) {
word = translate(parseInt(n / 1000000)).trim() + ' Million ' + translate(n % 1000000);
} else {
word = translate(parseInt(n / 1000000000)).trim() + ' Billion ' + translate(n % 1000000000);
}
return word;
}
// Get the result by translating the given number
let result = translate(n);
return result.trim() + '.';
}
n = 1002;
console.log("Number n = " + n);
console.log("In word: " + test(n));
n = 1279;
console.log("Number n = " + n);
console.log("In word: " + test(n));
n = 127900;
console.log("Number n = " + n);
console.log("In word: " + test(n));
n = 1279000;
console.log("Number n = " + n);
console.log("In word: " + test(n));
Using PHP
<?php
/**
* Created by PhpStorm.
* User: sakthikarthi
* Date: 9/22/14
* Time: 11:26 AM
* Converting Currency Numbers to words currency format
*/
$number = 190908100.25;
$no = floor($number);
$point = round($number - $no, 2) * 100;
$hundred = null;
$digits_1 = strlen($no);
$i = 0;
$str = array();
$words = array('0' => '', '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' => 'forty', '50' => 'fifty',
'60' => 'sixty', '70' => 'seventy',
'80' => 'eighty', '90' => 'ninety');
$digits = array('', 'hundred', 'thousand', 'lakh', 'crore');
while ($i < $digits_1) {
$divider = ($i == 2) ? 10 : 100;
$number = floor($no % $divider);
$no = floor($no / $divider);
$i += ($divider == 10) ? 1 : 2;
if ($number) {
$plural = (($counter = count($str)) && $number > 9) ? 's' : null;
$hundred = ($counter == 1 && $str[0]) ? ' and ' : null;
$str [] = ($number < 21) ? $words[$number] .
" " . $digits[$counter] . $plural . " " . $hundred
:
$words[floor($number / 10) * 10]
. " " . $words[$number % 10] . " "
. $digits[$counter] . $plural . " " . $hundred;
} else $str[] = null;
}
$str = array_reverse($str);
$result = implode('', $str);
$points = ($point) ?
"." . $words[$point / 10] . " " .
$words[$point = $point % 10] : '';
echo $result . "Rupees " . $points . " Paise";
?>