eddi-z: Zahlenformate javascript -> php

Hallo,

in eine Inputbox Type Text schreibe ich mit PHP floats aus einer Datenbank. Amerikanische . und , schreibweise. Die Eingaben lese ich mit Javascript, wandle sie Number() um und addiere sie.

etwa so:

var c = Number(a)+number(b); das klappt solange a oder b < 1000. ist a zB 1,052.00 kriege ich den Javasriptfehler NaN.

Wie umgehe ich das?

  1. Tach!

    ist a zB 1,052.00 kriege ich den Javasriptfehler NaN.

    Wie umgehe ich das?

    Indem du zum Rechnen keine formatierten Zahlen sondern das Rohformat verwendest.

    dedlfix.

  2. Hallo eddi-z,

    Gruppierkommas entfernt man aus einem String mit

    wert = wert.replace(/,/g, '');
    

    Der naive Ansatz wert = wert.replace(',', ''); ist in JavaScript falsch. Falls es mehr als ein Komma gibt, würde nur eins entfernt. Man muss die Regex mit Global-Flag nehmen.

    Aber du bist da auf einem dünnen Eis. Willst Du wirklich ausschließlich das US-Zahlenformat unterstützen? Wälzt Du damit nicht Programmierprobleme auf deine Anwender ab?

    Das Thema Zahlenformatierung ist nämlich komplex, und international sehr variabel. Die Schreibweisen 1,234,567.88 / 1.234.567,99 / 1 234 567,99 oder 1'234'567,99 sind nur die Spitze des Eisbergs (unter anderem deswegen, weil die Leerstellen und Apostrophe bei typographischem Zahlensatz keine normalen Leerstellen und Apostrophe sind, sondern schmale Leerstellen und Hochstriche). Quelle

    Ein kleiner Ansatz zum universaleren Zahlenverständnis wäre

    wert = wert.replace(/[^-1234567890.]/g, "")
    

    das würde ALLES außer Ziffern, Minuszeichen und Dezimalpunkt wegwerfen. Die Anwenderin kann dann gruppieren, wie sie will. Dem Anwender muss lediglich ganz deutlich gemacht werden, dass das System Dezimalpunkte erwartet. Eine Einstellmöglichkeit für die Anwender wäre natürlich optimal.

    Rolf

    --
    sumpsi - posui - clusi
  3. @@eddi-z

    Deine Problembeschreibung ist mir unverständlich.

    in eine Inputbox Type Text schreibe ich mit PHP floats aus einer Datenbank. Amerikanische . und , schreibweise.

    Wie liegen die Werte in der Datenbank vor? Als Zahlen oder als Strings?

    Die Eingaben lese ich mit Javascript, wandle sie Number() um und addiere sie.

    Welche Eingaben? Soll der Nutzer die Vorgabewerte aus der Datenbank ändern können?

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann