replaced http://codereview.stackexchange.com/ with https://codereview.stackexchange.com/
Related questions are Number to Words and Converting a number to the text representation.
Related questions are Number to Words and Converting a number to the text representation.
(function (global) {
'use strict';
var scalePrefix = ['m', 'b', 'tr', 'quadr', 'quint',
'sext', 'sept', 'oct', 'non', 'dec'];
var digits = ['', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine'];
var tens = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty',
'sixty', 'seventy', 'eighty', 'ninety'];
var teens = { 0: 'ten', 1: 'eleven', 2: 'twelve',
3: 'thir', 5: 'fif', 8: 'eigh' };
function nameDigit(digit) {
return digits[digit];
}
function nameTenToNineteen(number) {
var prefix = teens[number] || digits[number];
return number < 3 ? prefix : prefix + 'teen';
}
function nameTripletScale(digitCount) {
return digitCount < 3 ? '' :
digitCount < 6 ? 'thousand' :
scalePrefix[digitCount / 3 - 2] + 'illion';
}
function nameTripletHead(number) {
return +number ? (nameDigit(number) + ' hundred') : '';
}
function nameTripletTail(digitPair) {
var separator = +digitPair[1] ? '-' : '';
return digitPair[0] == 0 ? nameDigit(digitPair[1]) :
digitPair[0] == 1 ? nameTenToNineteen(digitPair[1]) :
tens[digitPair[0]] + separator + digits[digitPair[1]];
}
function extractSymbols(number) {
var symbols, digitCount;
number = ('' + number);
if (!number.match(/^(-?)[\d,]+/)) {
throw new Error('invalid number: ' + number);
}
symbols return= number.replace(/,/g, '').split('');
digitCount = symbols.length - (symbols[0] == '-');
if (digitCount / 3 > scalePrefix.length + 2) {
throw new Error('number out of range: ' + number);
}
return symbols;
}
function nameNumber(number) {
var symbols = extractSymbols(number),
sign = '',
segments = [],
segment;
function append(item) {
item && segments.push(item);
}
if (symbols[0] == '-') {
sign = 'negative ';
symbols.shift();
}
while(symbols.length % 3) {
symbols.unshift(0);
}
while(symbols.length) {
segment = symbols.splice(0, 3);
append(nameTripletHead(segment[0]));
append(nameTripletTail(segment.slice(1)));
if (segment.join('') > 0) {
append(nameTripletScale(symbols.length));
}
}
return sign + (segments.join(' ') || 'zero');
}
global['nameNumber'] = nameNumber;
}(this));
(function (global) {
'use strict';
var scalePrefix = ['m', 'b', 'tr', 'quadr', 'quint',
'sext', 'sept', 'oct', 'non', 'dec'];
var digits = ['', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine'];
var tens = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty',
'sixty', 'seventy', 'eighty', 'ninety'];
var teens = { 0: 'ten', 1: 'eleven', 2: 'twelve',
3: 'thir', 5: 'fif', 8: 'eigh' };
function nameDigit(digit) {
return digits[digit];
}
function nameTenToNineteen(number) {
var prefix = teens[number] || digits[number];
return number < 3 ? prefix : prefix + 'teen';
}
function nameTripletScale(digitCount) {
return digitCount < 3 ? '' :
digitCount < 6 ? 'thousand' :
scalePrefix[digitCount / 3 - 2] + 'illion';
}
function nameTripletHead(number) {
return +number ? (nameDigit(number) + ' hundred') : '';
}
function nameTripletTail(digitPair) {
var separator = +digitPair[1] ? '-' : '';
return digitPair[0] == 0 ? nameDigit(digitPair[1]) :
digitPair[0] == 1 ? nameTenToNineteen(digitPair[1]) :
tens[digitPair[0]] + separator + digits[digitPair[1]];
}
function extractSymbols(number) {
number = ('' + number);
if (!number.match(/^(-?)[\d,]+/)) {
throw new Error('invalid number: ' + number);
}
return number.replace(/,/g, '').split('');
}
function nameNumber(number) {
var symbols = extractSymbols(number),
sign = '',
segments = [],
segment;
function append(item) {
item && segments.push(item);
}
if (symbols[0] == '-') {
sign = 'negative ';
symbols.shift();
}
while(symbols.length % 3) {
symbols.unshift(0);
}
while(symbols.length) {
segment = symbols.splice(0, 3);
append(nameTripletHead(segment[0]));
append(nameTripletTail(segment.slice(1)));
if (segment.join('') > 0) {
append(nameTripletScale(symbols.length));
}
}
return sign + (segments.join(' ') || 'zero');
}
global['nameNumber'] = nameNumber;
}(this));
(function (global) {
'use strict';
var scalePrefix = ['m', 'b', 'tr', 'quadr', 'quint',
'sext', 'sept', 'oct', 'non', 'dec'];
var digits = ['', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine'];
var tens = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty',
'sixty', 'seventy', 'eighty', 'ninety'];
var teens = { 0: 'ten', 1: 'eleven', 2: 'twelve',
3: 'thir', 5: 'fif', 8: 'eigh' };
function nameDigit(digit) {
return digits[digit];
}
function nameTenToNineteen(number) {
var prefix = teens[number] || digits[number];
return number < 3 ? prefix : prefix + 'teen';
}
function nameTripletScale(digitCount) {
return digitCount < 3 ? '' :
digitCount < 6 ? 'thousand' :
scalePrefix[digitCount / 3 - 2] + 'illion';
}
function nameTripletHead(number) {
return +number ? (nameDigit(number) + ' hundred') : '';
}
function nameTripletTail(digitPair) {
var separator = +digitPair[1] ? '-' : '';
return digitPair[0] == 0 ? nameDigit(digitPair[1]) :
digitPair[0] == 1 ? nameTenToNineteen(digitPair[1]) :
tens[digitPair[0]] + separator + digits[digitPair[1]];
}
function extractSymbols(number) {
var symbols, digitCount;
number = ('' + number);
if (!number.match(/^(-?)[\d,]+/)) {
throw new Error('invalid number: ' + number);
}
symbols = number.replace(/,/g, '').split('');
digitCount = symbols.length - (symbols[0] == '-');
if (digitCount / 3 > scalePrefix.length + 2) {
throw new Error('number out of range: ' + number);
}
return symbols;
}
function nameNumber(number) {
var symbols = extractSymbols(number),
sign = '',
segments = [],
segment;
function append(item) {
item && segments.push(item);
}
if (symbols[0] == '-') {
sign = 'negative ';
symbols.shift();
}
while(symbols.length % 3) {
symbols.unshift(0);
}
while(symbols.length) {
segment = symbols.splice(0, 3);
append(nameTripletHead(segment[0]));
append(nameTripletTail(segment.slice(1)));
if (segment.join('') > 0) {
append(nameTripletScale(symbols.length));
}
}
return sign + (segments.join(' ') || 'zero');
}
global['nameNumber'] = nameNumber;
}(this));
default