Convert.ToInt32 (float) non riesce quando si tenta di convertire float a Int32
-
01-10-2019 - |
Domanda
Non viene generata un'eccezione, funzione appena soste in questa dichiarazione:
int productQuantity = Convert.ToInt32("1.00");
e rendimenti.
Che cosa sto facendo di sbagliato per convertire questo galleggiante Int32
?
Nota:. Sono in esecuzione in un BackgroundWorkerThread
Soluzione
Un'eccezione viene gettata in questo caso è solo non essere emerso nel debugger. Questa stringa non è in un formato che è convertibile in un tipo Int32
e quindi getta ed eccezione. È possibile verificare questo avvolgendolo in un blocco try / catch se l'IDE non sta cooperando.
L'approccio migliore è probabilmente quello di convertire la stringa in un double
e poi gettato manualmente fino a giungere alla int
. Questo fa aprire la porta per la perdita di dati a causa di differenze di precisione. Ma dato l'input è in un formato stile float questo è inevitabile se si desidera che il prodotto finale sia una int
Altri suggerimenti
È necessario convertirlo in un double
prima, e poi convertire in Int32
.
int productQuantity = Convert.ToInt32(double.Parse("1.00"));
Un'eccezione viene lanciata, è solo che a vederlo è necessario controllare la proprietà RunWorkerCompletedEventArgs.Error
nel gestore di eventi per BackgroundWorker.RunWorkerCompleted
.
Ogni eccezione che viene generata dal filo del lavoratore di sfondo quando il lavoro di fondo è stato fatto è assegnato a quella proprietà.
FormatException stringa di input non era in un formato corretto.