Imagine esto en forma decimal. Suponga que tiene el número:
1.000000 * 10^6
o 1,000,000. Si todo lo que tenían eran seis dígitos de precisión, la adición de 0,5 a este número produciría
1.0000005 * 10^6
Sin embargo, el pensamiento actual con los modos de redondeo fp es el uso de "Ronda a Incluso," en lugar de "redondeo al más cercano." En este caso, cada vez que incremente este valor, volverá a redondear en la unidad de coma flotante a 16,777,216 o 2^24. Los solteros en IEE 754 se representan como:
+/- exponent (1.) fraction
donde el "1." está implícito y la fracción es otros 23 bits, todos ceros, en este caso. El 1 adicional binario se derramará en el dígito guard, se reducirá al paso de redondeo y se eliminará cada vez, sin importar cuántas veces lo incremente. La unidad ulp
o en el último lugar siempre será cero. El último incremento de éxito es de:
+2^23 * (+1.) 11111111111111111111111 -> +2^24 * (1.) 00000000000000000000000
http://stackoverflow.com/questions/3448777/how-to-represent-0-1-in-floating-point-arithmetic-and-decimal – horgh
http://stackoverflow.com/questions/6275327/understanding-floating-point-representation-errors-whats-wrong-with-my-thinkin – horgh
Si algo así te atrapa, te aconsejo encarecidamente que leas: Lo que todo científico de la computación debería saber saber sobre la aritmética de punto flotante. Explica cómo se implementan en el hardware y cubre todos los errores que eventualmente se encontrarán. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html –