Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function () {
- function toWords() {
- var ones,
- tens,
- hundred,
- output,
- numString,
- denominations,
- groups,
- number = this;
- if (number && number.valueOf && typeof number.valueOf() !== 'number') {
- throw new Error('Input must be a number');
- }
- if (number.valueOf() === 0) {
- return 'Zero';
- }
- function reverse(s) {
- var i, o = '';
- for (i = s.length - 1; i >= 0; i--) {
- o += s[i];
- }
- return o;
- }
- ones = ['', ' One', ' Two', ' Three', ' Four', ' Five', ' Six', ' Seven', ' Eight', ' Nine', ' Ten', ' Eleven', ' Twelve', ' Thirteen', ' Fourteen', ' Fifteen', ' Sixteen', ' Seventeen', ' Eighteen', ' Nineteen'];
- tens = ['', '', ' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty', ' Seventy', ' Eighty', ' Ninety'];
- hundred = ' Hundred';
- denominations = ['', '', ' Thousand', ' Million', ' Billion', ' Trillion'];
- numString = parseInt(number.valueOf(), 10).toString().replace('-', '');
- groups = reverse(numString).match(/.{1,3}/g).map(reverse).reverse();
- output = '';
- function convert3DigitNumberToWord(numberString) {
- var result = '',
- _3DigitNumber = parseInt(numberString, 10),
- _3DigitNumberString = _3DigitNumber.toString(),
- tenth;
- if (_3DigitNumber < 20) {
- result = ones[_3DigitNumber];
- } else if (_3DigitNumberString.length === 3) {
- result = ones[parseInt(_3DigitNumberString.charAt(0), 10)] + hundred;
- tenth = parseInt(_3DigitNumberString.charAt(1) + _3DigitNumberString.charAt(2), 10);
- if (tenth < 20) {
- result += ones[tenth];
- } else {
- result += tens[parseInt(_3DigitNumberString.charAt(1), 10)];
- result += ones[parseInt(_3DigitNumberString.charAt(2), 10)];
- }
- } else {
- result += tens[parseInt(_3DigitNumberString.charAt(0), 10)];
- result += ones[parseInt(_3DigitNumberString.charAt(1), 10)];
- }
- return result;
- }
- groups = groups.forEach(function (_3DigitNumberString, index, groups) {
- output += convert3DigitNumberToWord(_3DigitNumberString) + denominations[groups.length - index];
- });
- if (number < 0) {
- output = 'Negative' + output;
- }
- return output.trim();
- }
- Number.prototype.toWords = toWords;
- }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement