La razón por la que no debería verificarse la igualdad de flotadores es que los números de punto flotante no son perfectamente precisos: hay cierta inexactitud en el almacenamiento con algunos números, como los extendidos demasiado lejos en la mantisa y los decimales Estoy hablando de repetir decimales en la base 2). Puedes pensar en esta imprecisión como "redondeando hacia abajo". Los dígitos que se extienden más allá de la precisión del número de coma flotante se truncan, redondeando efectivamente hacia abajo.
Si no ha cambiado, mantendrá esa igualdad. Sin embargo, si lo cambia ligeramente, probablemente no debería usar igualdades, sino un rango como (x < 0.0001 && x > -.0001)
.
En resumen: siempre y cuando no juegue con x en un nivel muy pequeño, está bien.
no entiendo, si inicia x a 0 ¿por qué no es bueno comprobar si 0? 0 es un valor válido para el doble – JohnJohnGa
Los números de punto flotante tienen un montón de redondeos cuando comienza a alcanzar los límites. La misma razón que si tiene 3 dígitos para usar en la base diez, tiene 0.004 y se divide entre tres, espera 0.00, pero quién sabe qué sucede. –
Correcciones de Thomas: Técnicamente no es redondeado, pero es inexacta debido a la precisión limitada y la naturaleza binaria de los flotadores. –