Hallo Lutz!
das Verfahren versagt leider bei x=0.
genaugenommen bei allem kleiner 1.
für positive Zahlen fehlt nach:
x=x.toString(); // in String verwandlen
while(x.length<n+1) // vorne mit Nullen auf Mindestlänge auffüllen
x="0"+x;
Die Idee an dem Verfahren ist, dass nur an einer Stelle mit Floats gerechnet wird. Bei anderen Verfahren, die Teile der Zahl getrennt berechnen, kann es einen mit unterschiedlichen Rechenfehlern der Teilberechnungen erwischen.
Gruss,
Carsten
P.S:
Dein Einzeiler muss:
zahltext=parseInt(Math.round(x))+"."+String(Math.abs(Math.round(x*100))%100+100).substr(1,2);
^^^^^^^^^^
heissen, sonst geht das bei Zahlen wie 129.996 schief.