Decimal.Parse errore di formato stringa errato

Ho un semplice problema con l’analisi decimale. Il seguente codice funziona correttamente sul mio computer ma quando pubblico il progetto sul server (VPS, edizione standard di Windows Server 2008 R2) viene visualizzato l’errore “La stringa di input era nel formato errato.” Qualche idea, cosa c’è che non va?

Memorizzo quel numero analizzato nella tabella DB MySQL – il tipo di colonna è DECIMAL(10, 4)

Codice sorgente:

 CultureInfo nonInvariantCulture = new CultureInfo("en-AU"); //or pl-PL nonInvariantCulture.NumberFormat.NumberDecimalSeparator = "."; Thread.CurrentThread.CurrentCulture = nonInvariantCulture; string toConvert = ("3,4589").Replace(",", "."); //it's an example decimal parsed = decimal.Parse(toConvert); 

Se si sa che la rappresentazione della stringa del numero utilizza la virgola come separatore decimale, è ansible analizzare il valore utilizzando un NumberFormatInfo personalizzato:

 var number = "3,4589"; var numberFormatInfo = new NumberFormatInfo { NumberDecimalSeparator = "," }; var value = Decimal.Parse(number, numberFormatInfo); 

Puoi anche utilizzare un CultureInfo esistente per una cultura che sai funzionare come pl-PL ma penso che sia più facile da capire.

Se invece il formato del numero è 3.4589 , puoi semplicemente utilizzare CultureInfo.InvariantCulture che puoi considerare una sorta di cultura “predefinita” basata su en-US :

 var number = "3.4589"; var value = Decimal.Parse(number, CultureInfo.InvariantCulture); 

È ansible creare un NumberFormatInfo personalizzato per analizzare il valore

qualcosa su queste linee

 NumberFormatInfo numinf = new NumberFormatInfo(); numinf.NumberDecimalSeparator= ","; decimal.Parse("3,4589", numinf); 

Immagino che per un lavoro intorno al codice qui sotto risolverà il problema.

 decimal parsed = decimal.Parse(toConvert, CultureInfo.InvariantCulture);