Code:
<script type="text/javascript">
var units = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"],
specunits = { "ten-one" : "eleven", "ten-two" : "twelve", "ten-three" : "thirteen", "ten-four" : "fourteen", "ten-five" : "fifteen", "ten-six" : "sixteen", "ten-seven" : "seventeen", "ten-eight" : "eighteen", "ten-nine" : "nineteen" },
tens = ["", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"];
function numToEnglish(num) {
num = parseInt(num);
if(isNaN(num) || num < -999 || num > 999)
return "Invalid input.";
var sign = "";
if(num < 0) {
sign = "minus "
num *= -1;
}
var nunits = num % 10,
ntens = parseInt(Math.round((num % 100) / 10)),
nhunds = parseInt(Math.round(num / 100)),
tandu,
thunds;
if(tens[ntens] && units[nunits])
tandu = tens[ntens] + "-" + units[nunits];
else
tandu = tens[ntens] + units[nunits];
if(specunits[tandu])
tandu = specunits[tandu];
thunds = units[nhunds];
if(thunds)
thunds += " hundred ";
if(units[nhunds])
if(tens[ntens] || units[nunits])
thunds += "and ";
else
tandu = "";
return sign + thunds + tandu;
}
</script>
<form action="" onsubmit="this.elements['english'].value = numToEnglish(this.elements['num'].value);">
<label>
Number between -999 and 999: <input type="text" name="num">
</label>
<input type="submit" value="To English">
<input type="text" name="english">
</form>
Bookmarks