Convert.ToInt32 (float) échoue en essayant de convertir flotteur Int32
-
01-10-2019 - |
Question
exception est levée Non, fonction seulement à cette déclaration arrête:
int productQuantity = Convert.ToInt32("1.00");
et les retours.
Qu'est-ce que je fais mal à convertir ce flotteur Int32
?
Note:. Je courais dans un BackgroundWorkerThread
La solution
Une exception est levée dans ce cas, il est tout simplement pas fait surface dans le débogueur. Cette chaîne est pas dans un format qui est convertible à un type de Int32
et jette donc et exception. Vous pouvez vérifier cela en l'enveloppant dans un bloc try / catch si l'IDE ne coopérait pas.
La meilleure approche est probablement ici pour convertir la chaîne en un double
puis jeté manuellement vers le bas à un int
. Cela n'ouvre la porte pour la perte de données en raison des différences de précision. Mais compte tenu de votre entrée est dans un format de style float cela est inévitable si vous voulez que le produit final soit un int
Autres conseils
Vous devez le convertir en un double
d'abord, puis convertir en Int32
.
int productQuantity = Convert.ToInt32(double.Parse("1.00"));
Un exception est levée, il est juste que pour le voir vous devez inspecter la propriété RunWorkerCompletedEventArgs.Error
dans le gestionnaire d'événements pour BackgroundWorker.RunWorkerCompleted
.
Toute exception qui est jeté du fil d'ouvrier de fond quand est fait le travail de fond est affecté à cette propriété.
FormatException La chaîne d'entrée était pas dans un format correct.