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,' ');
}