VB Beispiel:
dataView.Table.Columns(x).DataType = GetType(Double)
dataView.Table.Rows(n).Item(x) = "45.2"
Console.WriteLine(dataView.Table.Rows(n).Item(x))
// Ausgabe: 452.0Ebenso wird ein Cast von String nach Double in der Kultur "de-DE" m.E. falsch übersetzt, aus:
CDbl("41.5")
wird 415.0
Wow! Das klappt ja prima! Da bekommt man ein Double im String Format und wegen einer Culture-Einstellung wird diese missinterpretiert. Also wirklich, meine lieben Damen und Herren von Microsoft. Der Datentyp der Spalte ist Double und nur weil die CultureInfo auf "de-DE" steht wird ein ","(Komma) als Dezimaltrennzeichen angenommen. Solche formate grundsätzlich auf die angegebene Kultur anzuwenden ist zwar konsequent, allerdings aus meiner Sicht nicht praktikabel, da man als Entwickler von mehrsprachigen Anwendungen hier zusätlich noch beim Konvertieren von Werten auf die Ländereinstellung achten muss.
Seit ich programmiere sind double Werte mit einem .(Punkt) als Dezimaltrennzeichen versehen, warum wird im .Net davon abgewichen? Damit die Fehleranfälligkeit erhöht wird?
Eine ganz ähnliche Problematik ergibt sich zum Beispiel bei Datumswerten unter anderem im SQL-Server. Ich frage mich wirklich, warum sowas sein muss? Reicht es nicht sich programmatisch auf EIN EINZIGES Format (zum Beispiel das US-englische) zu beschränken und lediglich bei der Ausgabe/Anzeige der Werte in der Oberfläche eine entsprechende Konvertierung vorzunehmen?
Keine Kommentare:
Kommentar veröffentlichen
Feel free to comment...