Das sehe ich auch so. Aber nach welchem Algorithmus trifft man am besten die Entscheidung, ob es sich nun um einen Tausender-Seperator oder um ein Dezimaltrennzeichen handelt, wenn nur ein Punkt oder ein Komma drin ist im String.
Die Marotte mit dem Tausender-Trennzeichen würde ich gar nicht berücksichtigen. Bei der _Ausgabe_ von Zahlen wird zwar zur besseren Lesbarkeit oft eins gesetzt. Aber bei der _Eingabe_ benutzt es IMO kaum jemand.
123,896 sind das jetzt 123 + 898/1000 oder sind es
Einhundertdreiundzwanzigtausendschthundertsechunsneunzig?
Das sind für mich zwei getrennte Zahlen, nämlich die 123, und davon abgesetzt die 896.
1.234.900,001 hier ist sie Sache klar erkennbar
1,234,900.002 hier auch
Ja, aber das sind Formate, die ich bei der freien Eingabe von Zahlen nicht erwarten würde (siehe oben).
1,234.900,003 das ist verboten und klar als Fehler erkennbar
1.234,900.004 das ist auch verboten und auch klar als Fehler erkennbar
ACK.
Wie macht mans richtig?
Am besten die Einstellung aus dem Benutzerprofil verwenden. Auf Web-Projekte bezogen heißt das, dass man nicht anfangen sollte, selbst Umwandlungsroutinen (etwa in JS) zu schreiben. Wenn ich den Inhalt (value) eines Formularfeldes direkt in einem numerischen Ausdruck verarbeite, dann ist der JS-Interpreter dafür verantwortlich, das Zahlenformat richtig zu erkennen. Und der _hat_ die Möglichkeit, Einstellungen aus dem User-Profil abzufragen.
Bei serverseitigen Lösungen (PHP, Perl, CGI allgemein) wird's problematischer. Da muss man wahrscheinlich echt raten. Aber auch hier ergibt es sich oft schon aus dem Kontext. In deinem ersten Beispiel würde ich die Interpretation davon abhängig machen, ob ich an dieser Stelle _einen_ numerischen Wert erwarte oder zwei.
Harzliche Grüße aus http://www.annerschbarrich.de
Schwäbische Grüße aus http://www.backnang.de ;)
Martin