JSFiddle - React, Tailwind, and code Playground

by halirgb

JavaScript

var th = ['','mi','milion', 'billion','trillion'];
var dg = ['zero','unu','doi','trei','patru', 'cinci','sase','sapte','opt','noua']; 
var tn = ['zece','unsprezece','douasprezece','treisprezece', 'paispe','cincispe','casespe', 'saptespe','optaspe','nouaspe'];
var tw = ['douazeci si','treizeci si','patruzeci si','cinczeci si', 'sazezeci si','saptezeci si','optzeci si','nouazeci si']; 

alert(toWords(20395));

function toWords(s)
    {  
        s = s.toString(); 
        s = s.replace(/[\, ]/g,''); 
        if (s != parseFloat(s)) return 'not a number'; 
        var x = s.indexOf('.'); 
        if (x == -1) x = s.length; 
        if (x > 15) return 'too big'; 
        var n = s.split(''); 
        var str = ''; 
        var sk = 0; 
        for (var i=0; i < x; i++) 
        {
            if ((x-i)%3==2) 
            {
                if (n[i] == '1') 
                {
                    str += tn[Number(n[i+1])] + ' '; 
                    i++; 
                    sk=1;
                }
                else if (n[i]!=0) 
                {
                    str += tw[n[i]-2] + ' ';
                    sk=1;
                }
            }
            else if (n[i]!=0) 
            {
                str += dg[n[i]] +' '; 
                if ((x-i)%3==0) str += 'sute ';
                sk=1;
            }

            if ((x-i)%3==1)
            {
                if (sk) str += th[(x-i-1)/3] + ' ';
                sk=0;
            }
        }
        if (x != s.length)
        {
            var y = s.length; 
            str += 'point '; 
            for (var i=x+1; i<y; i++) str += dg[n[i]] +' ';
        }
        return str.replace(/\s+/g,' ');
    }