Specificando corretta IFormatProvider/CultureInfo
Il comportamento che avete osservato potrebbe essere causato dal fatto che due macchine hanno differenti CurrentCulture
s. Il valore predefinito di CurrentCulture
dipende da una versione di Windows.
Per ottenere risultati coerenti su varie macchine, è necessario fornire uno specifico CultureInfo
(o qualsiasi altra classe che implementa IFormatProvider
) per il metodo Parse o TryParse, ad es.
// using System.Globalization;
double value = Double.Parse(stringValue, CultureInfo.InvariantCulture);
o
metodo
double valueUsEnglish = Double.Parse(stringValue, new CultureInfo("en-US"));
Parse utilizza un coltura specifico punto decimale simbolo e gruppo separatore simbolo. In alcune lingue (ad es. In inglese) il simbolo del punto decimale è un punto mentre in altri (ad esempio in polacco) è una virgola. I simboli di separatore di gruppo sono anche diversi in varie lingue.
Se 53.345634
viene analizzato come 53345634
, il computer utilizza una cultura in cui punto è un separatore di gruppo.
Parse vs TryParse
Si dovrebbe anche pensare se l'utilizzo di Parse
TryParse
metodo è più appropriato.
Se durante il normale funzionamento il programma prevede un output non valido (ad esempio un valore fornito dall'utente), è necessario utilizzare lo TryParse
ed esaminare il valore restituito. TryParse
restituisce un valore booleano che indica se l'analisi ha avuto esito positivo e non genera eccezioni.
Se il valore che si sta analizzando non dovrebbe mai essere errato (ad esempio si stanno analizzando le risorse limitate con il proprio programma) è possibile utilizzare Parse
. Se si dispone di un modo per recuperare o fornire alcune informazioni aggiuntive all'utente, è possibile rilevare le eccezioni appropriate. Secondo la documentazione, le possibili eccezioni sono: ArgumentNullException
, FormatException
e OverflowException
.
fonte
2016-05-04 21:12:35
A seconda della versione di MySQL, è possibile provare a modificare il tipo di dati in virgola mobile o decimale. So che non ha molto senso, ma dalla mia esperienza potrebbe essere una soluzione. –