Number to String - How to Turn 150 into One Hundred and Fifty

Just wondering if there are libraries that can easily convert numbers into their string representations in javascript, jquery, php, python, etc.

Example: I need to turn 1,210 into "Thousand two hundred and ten."

Is there a name for this procedure?

+5
source share
2 answers

Javascript Solution. Supports all integers from negative infinity to infinity:

var GetWord;
(function(){
    GetWord = function (number) {//number must be an integer
        return (function f(number){
            var output = [];
            var is_negative = number < 0;
            number = Math.abs(number);

            var chunks = [];
            for (var x = count_names.length - 1, limit = 0; x >= limit; --x) {
                var chunk = Math.floor(number / counts[x]);
                if (chunk !== 0) {
                    output.push(GetWord(chunk) + " " + count_names[x]);
                }
                chunks[x] = chunk;
                number -= chunk * counts[x];
            }
            if (number !== 0) {
                if (number <= 19) {
                    output.push(number_names[number]);
                } else {
                    var tens = Math.floor(number / 10);
                    number -= tens * 10;
                    if (number === 0) {
                        output.push(number_names2[tens - 2]);
                    } else {
                        output.push(number_names2[tens - 2] + " " + GetWord(number));
                    }
                }
            }
            if (output.length > 2) {
                for (var x = 0, limit = output.length - 1; x < limit; ++x) {
                    output[x] += ","
                }
            }
            if (output.length > 1) {
                var ubound = output.length - 1;
                output[output.length] = output[ubound];
                output[ubound] = "and";
            }
            if (is_negative) {
                output.splice(0, 0, "negative");
            } 
            return output;
        })(number).join(" ");
    };
    var number_names = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"];
    var number_names2 = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", "hundred"]
    var count_names = ["hundred", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion", "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "quindecillion", "sexdecillion", "septendecillion", "octodecillion", "novemdecillion", "vigintillion"];
    var counts = [100];
    for (var x = counts.length, limit = count_names.length; x < limit; ++x) {
       counts.push(Math.pow(1000, x));
    }
})();

Application:

GetWord(1210); gives one thousand, two hundred, and ten

GetWord(2147483647); gives two billion, one hundred and forty seven million, four hundred and eighty three thousand, six hundred, and forty seven

GetWord(-123876124); gives negative one hundred and twenty three million, eight hundred and seventy six thousand, one hundred, and twenty four

If you need caps, just modify these array templates in the "capped" form.

+2
source

, pynum2word : http://sourceforge.net/projects/pynum2word/

, to_cardinal.

, " "

0

All Articles