Convert digits into words with JavaScript

后端 未结 27 1454
我寻月下人不归
我寻月下人不归 2020-11-22 15:08

I am making a code which converts the given amount into words, heres is what I have got after googling. But I think its a little lengthy code to achieve a simple task. Two R

27条回答
  •  迷失自我
    2020-11-22 15:54

     var units = ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    var tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"];
    
    
    
    function convert7digitIntoWords(num) {
        var remainder = num % 1000000
        var hun = num - remainder;
        var div = Math.floor(num / 100000);
        if (remainder !== 0)
            return (convert2digitIntoWords(div) + " lakhs " + convert5digitIntoWords(remainder % 100000))
        else
            return (convert2digitIntoWords(div) + " lakhs ")
    }
    
    function convert6digitIntoWords(num) {
        var remainder = num % 100000
        var hun = num - remainder;
        var div = Math.floor(num / 100000);
        if (remainder !== 0)
            return (units[div] + " lakh " + convert5digitIntoWords(remainder))
        else
            return (units[div] + " lakh ")
    }
    
    function convert5digitIntoWords(num) {
        var remainder = num % 10000
        var hun = num - remainder;
        var div = Math.floor(num / 1000);
        if (remainder !== 0)
            return (convert2digitIntoWords(div) + " thousand " + convert3digitIntoWords(remainder % 1000))
        else
            return (convert2digitIntoWords(div) + " thousand")
    }
    
    function convert4digitIntoWords(num) {
        var remainder = num % 1000
        var hun = num - remainder;
        var div = Math.floor(num / 1000);
        if (remainder !== 0)
            return (units[div] + " thousand " + convert3digitIntoWords(remainder))
        else
            return (units[div] + " thousand")
    }
    
    
    function convert3digitIntoWords(num) {
        var remainder = num % 100
        var hun = num - remainder;
        var div = Math.floor(num / 100);
        if (remainder !== 0)
            return (units[div] + " hundred " + convert2digitIntoWords(remainder))
        else
            return (units[div] + " hundred ")
    }
    
    function convert2digitIntoWords(num) {
        var remainder = num % 10;
        var div = Math.floor(num / 10);
        return (tens[div] + " " + convertNumIntoWords(remainder));
    }
    
    function convertNumIntoWords(num) {
    
        switch (("" + num).length) {
            case 1:
                return units[num];
            case 2:
                return convert2digitIntoWords(num);
            case 3:
                return convert3digitIntoWords(num)
            case 4:
                return convert4digitIntoWords(num)
            case 5:
                return convert5digitIntoWords(num)
            case 6:
                return convert6digitIntoWords(num)
            case 7:
                return convert7digitIntoWords(num)
            default:
                return "cannot be converted"
        }
    }
    
    console.log(convertNumIntoWords(3445125));
    

提交回复
热议问题