Sobes.tech
Junior

La structure switch fonctionne-t-elle avec les types double ou float?

sobes.tech IA

Réponse de l'IA

Non, en Java, la construcción switch no funciona directamente con tipos double ou float.

La razón es que los números de punto flotante tienen una representación imprecisa en la memoria del ordenador. Comparar estos números directamente con == puede conducir a resultados impredecibles debido a errores de precisión.

switch requiere una coincidencia exacta del valor para seleccionar la rama de ejecución. Los tipos soportados en switch son tipos enteros primitivos (byte, short, char, int), sus envoltorios (Byte, Short, Character, Integer), enumeraciones (Enum) y el tipo String (a partir de Java 7).

Para comparar valores de double o float, se pueden usar operadores condicionales if/else if/else. Se recomienda usar una tolerancia (epsilon) para la comparación de igualdad.

double value = 10.5;
double epsilon = 0.0001;

if (Math.abs(value - 10.5) < epsilon) {
    // Acción para value == 10.5
} else if (Math.abs(value - 5.0) < epsilon) {
    // Acción para value == 5.0
} else {
    // Acción para otros valores
}