Rolf B: Konvertiere formatierten STRING to NUMBER

Beitrag lesen

Hallo Bello,

die beste Methode ist, wie Gunnar schon schrieb, das separate Aufbewahren des numerischen Wertes. Wenn man eine App im Browser programmiert, sollte man ein fachliches Datenmodell haben und darin operieren, und die Übertragung ins DOM nur als Ausgabeschritt vorsehen, nicht zum Speichern.

Die zweitbeste Methode wäre, den numerischen Wert in einem eigenen Property an das DOM Element zu hängen. Das ist etwas frickelig, weil Du ja kein Recht auf reservierte Eigenschaftsnamen hast. Ein data-Attribut (über die dataset-Eigenschaft eines Elements erreichbar), speichert nur Strings. Du könntest (aber solltest nicht) Dir so helfen, dass Du im dataset den Wert in einem "genormten" Format ablegst, bei dem Du weißt, dass es einen DezimalPUNKT und keine Tausendertrenner gibt. Dann funktioniret parseFloat.

Was sehr unsicher ist bzw. Kenntnis über die bei NumberFormat verwendeten Locales voraussetzt, ist das Entfernen der Tausendergruppierung und das Umsetzen des Dezimaltrennzeichens in einen Punkt.

Angenommen, in in s steht die formatierte Zahl.

Wenn Du weißt, dass das Format en-GB ist:
z = parseFloat(s.replaceAll(",",""));

Wenn Du weißt, dass das Format de-DE ist:
z = parseFloat(s.replaceAll(".","").replace(",","."));

Weitere Formate bedingen andere Ersetzungen. Dazu schrieb Martin schon.

Was leider nicht existiert, ist eine "parse" Methode am NumberFormat, die eine Zahl in dem Format entgegennimmt, in dem format() sie erzeugen würde, und einen float daraus macht. Aus gutem Grund. Ohne Kenntnis der verwendeten Formatierungsregeln ist das reines Raten.

Rolf

--
sumpsi - posui - obstruxi