isNaN Kommastellen mit , statt mit . ?
Matze
- javascript
0 Cheatah
Hallo NG,
ich benutze die isNaN-Function um gültige Zahlen in einem Form zu prüfen. Leider lässt es dabei auch nur . und keine , zu ?
Gibts irgendwo einen Parameter um das zu ändern ? Oder muss ich jetzt mühsam den ganzen String Zeichen für Zeichen auf Gültigkeit prüfen ?
Danke im voraus.
Matze
Hi,
Gibts irgendwo einen Parameter um das zu ändern ?
nein, Strings mit Komma sind nun mal keine Zahlen.
Oder muss ich jetzt mühsam den ganzen String Zeichen für Zeichen auf Gültigkeit prüfen ?
Nein. Ersetze eventuelle Kommas[1] durch Punkte, und alles ist grün.
Cheatah
[1] Unter Berücksichtigung von Zahlenformaten wie "1,249.99".
Moin!
Oder muss ich jetzt mühsam den ganzen String Zeichen für Zeichen auf Gültigkeit prüfen ?
Nein. Ersetze eventuelle Kommas[1] durch Punkte, und alles ist grün.
[1] Unter Berücksichtigung von Zahlenformaten wie "1,249.99".
_Diese_ Aufgabenstellung ist vom Computer unlösbar. Denn deine Beispielzahl kann sowohl "1249 dezimalpunkt 99" bedeuten, als auch "1 dezimalpunkt 24999". Auch Nachkommastellen kann man schließlich per Tausendertrennzeichen trennen.
Der Duden empfiehlt zur optischen Auflockerung übrigens das Leerzeichen sowohl vor als auch hinter dem Komma, weil es sonst eben zu Verwechslungen kommen kann. In HTML hätte diese Methode aber zur Folge, dass Zahlen mittendrin umbrochen werden könnten, so dass man eigentlich lieber nehmen sollte. Oder eben den Punkt, was eben zu Mehrdeutigkeiten führen kann.
Allerdings ist sehr unwahrscheinlich, dass Benutzereingaben mit Tausendertrennzeichen erfolgen, so dass eine Umwandlung aller Kommas in Punkte im Prinzip ausreichen sollte. Natürlich empfehlen sich ggf. Tests, ob im String nicht vielleicht beide Zeichen vorhanden sind. Diesen sollte man dann im Zweifel zurückweisen.
- Sven Rautenberg
Hi,
[1] Unter Berücksichtigung von Zahlenformaten wie "1,249.99".
_Diese_ Aufgabenstellung ist vom Computer unlösbar. Denn deine Beispielzahl kann sowohl "1249 dezimalpunkt 99" bedeuten, als auch "1 dezimalpunkt 24999".
nein, denn in Nachkommastellen gibt es keine weiteren Kommas, egal mit welchem Zeichen. Was hingegen unlösbar ist ist, bei "1,234" (bzw. "1.234") zwischen "eins Kommas zwo drei vier" und "eintausendzweihundertvierunddreißig" zu unterscheiden. Dieses Problem liegt aber nur bei einem einzigen Kommazeichen und drei Ziffern hinter dem Komma vor; für jede andere Sitation existiert ein terminierender Algorithmus.
Der Duden empfiehlt zur optischen Auflockerung übrigens das Leerzeichen sowohl vor als auch hinter dem Komma, weil es sonst eben zu Verwechslungen kommen kann.
Ui, das habe ich ja noch nie gehört. Hier möchte ich dem Duden widersprechen, diese Empfehlung ist IMHO alles andere als sinnvoll; auch aus den von Dir genannten Konsequenzen.
Cheatah
Moin!
Hi,
[1] Unter Berücksichtigung von Zahlenformaten wie "1,249.99".
_Diese_ Aufgabenstellung ist vom Computer unlösbar. Denn deine Beispielzahl kann sowohl "1249 dezimalpunkt 99" bedeuten, als auch "1 dezimalpunkt 24999".nein, denn in Nachkommastellen gibt es keine weiteren Kommas, egal mit welchem Zeichen.
Wieso das denn nicht?
Wenn ich beispielsweise die Zahl Pi darstellen will:
3,141.592.653.589.793.238.462.643.383.279.5
Ok, da ist irgendwie klar: Das, was ganz alleine vorkommt, muß wohl "das Komma" sein. Gebe ich die Zahl kürzer an, gibts ein Problem.
Was hingegen unlösbar ist ist, bei "1,234" (bzw. "1.234") zwischen "eins Kommas zwo drei vier" und "eintausendzweihundertvierunddreißig" zu unterscheiden. Dieses Problem liegt aber nur bei einem einzigen Kommazeichen und drei Ziffern hinter dem Komma vor; für jede andere Sitation existiert ein terminierender Algorithmus.
...der in meinen Augen immer nur raten kann, was gemeint ist - inklusive Tippfehlern - sofern man neben Dezimaltrennzeichen auch Tausendertrennzeichen zuläßt.
Der Duden empfiehlt zur optischen Auflockerung übrigens das Leerzeichen sowohl vor als auch hinter dem Komma, weil es sonst eben zu Verwechslungen kommen kann.
Ui, das habe ich ja noch nie gehört. Hier möchte ich dem Duden widersprechen, diese Empfehlung ist IMHO alles andere als sinnvoll; auch aus den von Dir genannten Konsequenzen.
Die Information kommt aus meinem Duden, 19. Auflage, Abschnitt "Richtlinien zur Rechtschreibung, Zeichensetzung und Formenlehre in alphabetischer Reihenfolge", Regel 200: "Ganze Zahlen aus mehr als drei Ziffern werden von der Endziffer aus in dreistellige Gruppen zerlegt."
Erläuterung: "Man gliedert hierbei durch Zwischenraum, nicht durch Komma. Eine Gliederung durch Punkt ist möglich, kann aber zu Verwechslungen führen, da z.B. im Englischen der Punkt die Dezimalstelle angibt."
Regel 201: "Dezimalstellen werden von den ganzen Zahlen durch ein Komma getrennt."
Erläuterung: "Auch nach dem Komma ist eine Gliederung in Dreiergruppen durch Zwischenraum (nicht durch Punkt oder Komma!) möglich."
Und spannend finde ich folgenden Satz über die Geldbeträge:
"In der Schweiz steht zwischen Franken- und Rappenzahl gewöhnlich ein Punkt."
- Sven Rautenberg