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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top