Convert.ToDouble
Methode verwendet Ihre CurrentCulture
Einstellungen standardmäßig wenn Sie nicht liefern jedeIFormatProvider
.
Sieht aus wie Ihre CurrentCulture
nicht .
als NumberDecimalSeparator
verwendet, aber es wird wahrscheinlich als NumberGroupSeparator
verwendet. Aus diesem Grund Ihre Zeichenfolge analysiert als 3400
nicht 3.4
Als Lösung können Sie eine Kultur verwenden, die bereits.
als NumberDecimalSeparator
in einem zweiten Parameter Ihrer Convert.ToDouble
Methode wie InvariantCulture
hat.
double x;
x = Convert.ToDouble("3.47", CultureInfo.InvariantCulture); // x will be 3.47 not 3470
Für Ihre -1.54
Beispiel müssen Sie kombiniert AllowLeadingSign
und AllowDecimalPoint
Stile verwenden, um anzugeben. Leider, Convert.ToDouble
hat keine keine Überladung, die NumberStyles
als Parameter dauert.
Dafür können Sie stattdessen double.Parse
Methode verwenden.
double x;
x = double.Parse("-1.54", NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture); // x will be -1.54
Falsche Kultureinstellungen verwenden? Versuchen Sie 'Convert.ToDouble (reader [" x "], CultureInfo.InvariantCulture)' –