Home Articles FAQs XREF Games Software Instant Books BBS About FOLDOC RFCs Feedback Sitemap
irt

Q1017 How can I convert "1234.56" to "One thousand two hundred thirty-four and fifty-six" cents?

You are here: irt.org | FAQ | JavaScript | Number | Q1017 [ previous next ]

Try the following:

<html>

<head>

<script language="JavaScript"><!--
function makeArray0() {
  for (i = 0; i<makeArray0.arguments.length; i++)
   this[i] = makeArray0.arguments[i];
}

var numbers = new makeArray0('','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifthteen','sixteen','seventeen','eighteen','nineteen');

var numbers10 = new makeArray0('','ten','twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety');

function chequeAmount(input) {
  var dollars = Math.floor(input);
  var cents = Math.round((input*100 - dollars*100));

  var thousands = (dollars - dollars % 1000) / 1000;
  dollars -= thousands * 1000;
  var hundreds = (dollars - dollars % 100) / 100;
  dollars -= hundreds * 100;

  var output = '';

  output += (thousands > 0 ? fN(thousands) + ' thousand ' : '') +
            (hundreds > 0 ? fN(hundreds) + ' hundred ' : '') +
            (dollars > 0 ? fN(dollars) + ' ' : '') +
            ((thousands > 0 || hundreds > 0 || dollars > 0) ? 'dollars ' : '') +
            ((Math.floor(input) > 0 && cents > 0) ? 'and ' : '') +
            (cents > 0 ? fN(cents) + ' cents' : '');

  return output.substring(0,1).toUpperCase() + output.substring(1);
}

function fN(i) {
  if (i<20) return numbers[i];
  var tens = (i - i % 10) / 10, units = i - (i - i % 10);
  return numbers10[tens] + ((tens > 0 && units > 0) ? '-' : '') + numbers[units];
}
//--></script>

</head>

<body>

<form>
<input type="text" name="amount">
<input type="text" name="answer" size="80">
<input type="button" value="Convert" onClick="this.form.answer.value=chequeAmount(this.form.amount.value - 0)">
</form>

</body>

</html>

©2013 Martin Webb