sólo para ayudar a envolver su cerebro alrededor de la respuesta, te voy a dar una simple analogía. Recuerde que los números de coma flotante son aproximados. Muchos números no pueden representarse exactamente. Ahora, imagine que hacemos lo mismo con decimales, digamos que usamos seis dígitos después del lugar decimal.
¿Cómo representamos 1/3? .333333
es lo mejor que podemos hacer. Pero ahora 3 * 1/3
no será igual a 1.
¿Cómo representamos 2/3? .666666
al menos garantizará 2 * 1/3 = 2/3
. Pero 2/3 + 1/3
no será igual a 1.
Podemos representar 2/3 como .666667
. Pero entonces 2 * 1/3
no será igual a 2/3
. Pero al menos 1/3 + 2/3
será igual a uno.
De modo que el punto es que, con representaciones aproximadas, no puede garantizar respuestas exactamente correctas, solo respuestas suficientemente cercanas. En general, nunca debe comparar los números de punto flotante para la igualdad a menos que sea 100% positivo de que comprenda lo que está haciendo y por qué.
I ' he hecho varias [pequeñas correcciones] (http://programmers.stackexchange.com/posts/119596/revisions) en su código, no había manera de que su código original funcionara. ¿Has visto tu código producir la salida o acabas de copiarlo de alguna parte? – yannis