Convert.ToInt32 (float) falla al tratar de flotación convertido a Int32
-
01-10-2019 - |
Pregunta
Sin excepción es lanzada, la función sólo esté detenida en esta declaración:
int productQuantity = Convert.ToInt32("1.00");
y devoluciones.
¿Qué estoy haciendo mal para convertir a este objeto flotante a Int32
?
Nota:. Estoy corriendo en un BackgroundWorkerThread
Solución
Una excepción es introducida este caso es sólo que no se apareció en el depurador. Esta cadena no está en un formato que se puede convertir en un tipo Int32
y por lo tanto los tiros y excepción. Usted puede verificar esto envolviéndolo en un bloque try / catch si el IDE no está cooperando.
El mejor enfoque aquí es, probablemente, para convertir la cadena en un double
y luego se echó hacia abajo de forma manual a un int
. Esto hace abrir la puerta a la pérdida de datos debido a las diferencias de precisión. Pero teniendo en cuenta que su entrada está en un formato de estilo flotador esto es inevitable si desea que el producto final sea un int
Otros consejos
Es necesario para convertirlo en un double
primero, y luego convertir a Int32
.
int productQuantity = Convert.ToInt32(double.Parse("1.00"));
Una excepción es lanzada, es sólo que para verlo hay que inspeccionar la propiedad RunWorkerCompletedEventArgs.Error
en el controlador de eventos para BackgroundWorker.RunWorkerCompleted
.
Cualquier excepción que se produce a partir de hilos del trabajador plano cuando el trabajo de fondo que se está haciendo es asignado a esa propiedad.
FormatException cadena de entrada no tiene el formato correcto.