Advertisement
Guest User

Untitled

a guest
Apr 19th, 2015
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. (function () {
  2. function toWords() {
  3. var ones,
  4. tens,
  5. hundred,
  6. output,
  7. numString,
  8. denominations,
  9. groups,
  10. number = this;
  11.  
  12. if (number && number.valueOf && typeof number.valueOf() !== 'number') {
  13. throw new Error('Input must be a number');
  14. }
  15.  
  16. if (number.valueOf() === 0) {
  17. return 'Zero';
  18. }
  19.  
  20. function reverse(s) {
  21. var i, o = '';
  22. for (i = s.length - 1; i >= 0; i--) {
  23. o += s[i];
  24. }
  25. return o;
  26. }
  27.  
  28. ones = ['', ' One', ' Two', ' Three', ' Four', ' Five', ' Six', ' Seven', ' Eight', ' Nine', ' Ten', ' Eleven', ' Twelve', ' Thirteen', ' Fourteen', ' Fifteen', ' Sixteen', ' Seventeen', ' Eighteen', ' Nineteen'];
  29. tens = ['', '', ' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty', ' Seventy', ' Eighty', ' Ninety'];
  30. hundred = ' Hundred';
  31. denominations = ['', '', ' Thousand', ' Million', ' Billion', ' Trillion'];
  32. numString = parseInt(number.valueOf(), 10).toString().replace('-', '');
  33. groups = reverse(numString).match(/.{1,3}/g).map(reverse).reverse();
  34. output = '';
  35.  
  36. function convert3DigitNumberToWord(numberString) {
  37. var result = '',
  38. _3DigitNumber = parseInt(numberString, 10),
  39. _3DigitNumberString = _3DigitNumber.toString(),
  40. tenth;
  41.  
  42. if (_3DigitNumber < 20) {
  43. result = ones[_3DigitNumber];
  44. } else if (_3DigitNumberString.length === 3) {
  45. result = ones[parseInt(_3DigitNumberString.charAt(0), 10)] + hundred;
  46. tenth = parseInt(_3DigitNumberString.charAt(1) + _3DigitNumberString.charAt(2), 10);
  47. if (tenth < 20) {
  48. result += ones[tenth];
  49. } else {
  50. result += tens[parseInt(_3DigitNumberString.charAt(1), 10)];
  51. result += ones[parseInt(_3DigitNumberString.charAt(2), 10)];
  52. }
  53. } else {
  54. result += tens[parseInt(_3DigitNumberString.charAt(0), 10)];
  55. result += ones[parseInt(_3DigitNumberString.charAt(1), 10)];
  56. }
  57.  
  58. return result;
  59. }
  60.  
  61. groups = groups.forEach(function (_3DigitNumberString, index, groups) {
  62. output += convert3DigitNumberToWord(_3DigitNumberString) + denominations[groups.length - index];
  63. });
  64.  
  65. if (number < 0) {
  66. output = 'Negative' + output;
  67. }
  68.  
  69. return output.trim();
  70. }
  71.  
  72. Number.prototype.toWords = toWords;
  73. }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement