C# FormatException double.parse(), perché 0,89 non esegue l'analisi?[duplicare]
-
21-12-2019 - |
Domanda
class Program
{
static void Main(string[] args)
{
string str = "0.898";
double dbl = Double.Parse(str);
dbl++;
Console.WriteLine(dbl);
Console.ReadLine();
}
}
Tutti gli altri formati di cui ho bisogno per funzionare, come "100", funzionano.Ma non appena aggiungo un "punto" ho a FormatException
errore.
Soluzione
magari prova:
double dbl = double.Parse(str , CultureInfo.InvariantCulture);
controlla qui a ideone
Il tuo problema è che la tua cultura non consente i punti.La cultura invariante non è l'unica soluzione, puoi anche specificare la tua cultura e utilizzare i suoi separatori.Se la tua cultura attuale accetta solo virgole come separatori, potrebbe anche essere una soluzione sostituire il punto con la virgola.La mancata specifica della cultura in modo esplicito comporterà problemi con l'analisi dei numeri in macchine diverse che eseguono culture diverse.
Tutto ciò che è specifico di una cultura è sempre complicato e dovrebbe essere definito nel modo più preciso possibile.Se sai esattamente quale doppio formato utilizzerai, definiscilo.Se sai quale formato data utilizzerai, specificalo, ecc.