Skip to content

Instantly share code, notes, and snippets.

@pmturner
Created June 6, 2017 18:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pmturner/09ce922b306995449b42ae63806ec325 to your computer and use it in GitHub Desktop.
Save pmturner/09ce922b306995449b42ae63806ec325 to your computer and use it in GitHub Desktop.
function toWords(s) {
s = s.toString();
s = s.replace(/[\, ]/g, '');
if (s != parseFloat(s)) return 'not a number';
var x = s.indexOf('.');
if (x == -1) x = s.length;
if (x > 15) return 'too big';
var n = s.split('');
var str = '';
var sk = 0;
for (var i = 0; i < x; i++) {
if ((x - i) % 3 == 2) {
if (n[i] == '1') {
str += tn[Number(n[i + 1])] + ' ';
i++;
sk = 1;
} else if (n[i] != 0) {
str += tw[n[i] - 2] + ' ';
sk = 1;
}
} else if (n[i] != 0) {
str += dg[n[i]] + ' ';
if ((x - i) % 3 == 0) str += 'hundred ';
sk = 1;
}
if ((x - i) % 3 == 1) {
if (sk) str += th[(x - i - 1) / 3] + ' ';
sk = 0;
}
}
str += 'dollars';
if (x != s.length) {
var y = s.length;
str += ' and ';
for (var i = x + 1; i < y; i++) {
if (n[i] < 2) {
if (n[i] == 1) {
i++;
str += tn[n[i]] + ' ';
} else {
i++
str += 'zero';
}
} else {
str += (n[i] != 0 ? tw[n[i] - 2] + ' ' : '');
i++;
str += (n[i] != 0 ? dg[n[i]] + ' ' : '');
}
}
str += ' cents'
}
return str.replace(/\s+/g, ' ');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment