Problemas resueltos al detalle
-
Redondear 1.000 cantidades a la unidad entera más cercana con un total real de 98.351,63 7 pasos
Una tienda redondea cada uno de 1.000 importes a la unidad entera más cercana y los suma. El total real es 98.351,63. Calcula cuál es el total redondeado con cada regla y decide cuál debería usar la tienda.
-
Aclara la regla antes de que la columna signifique nada. Toma el 2,5. La regla de mitad hacia arriba lo pasa al 3. La de mitad al par lo pasa al 2, porque el 2 es el vecino par.
-
Comprueba que la mitad al par alterna en lugar de ir siempre hacia abajo. El 3,5 pasa al 4 con ambas reglas, porque esta vez el vecino par es el de arriba.
-
Ahora la columna. De los 1.000 importes, solo 11 caen exactamente en un empate, por lo que las dos reglas de la mitad coinciden en 989 de ellos y pueden diferir como máximo en 11. Eso es una unidad por empate.
-
Suma los valores redondeados. La mitad hacia arriba da 98.360, que está 8,37 por encima del real. La mitad al par da 98.354, es decir, 2,37 por encima. El 6 de diferencia entre ambos salió de esos 11 empates.
-
La mayor parte de esa desviación no proviene de los empates en absoluto. Es redondeo ordinario que, sobre 1.000 cantidades ordinarias, tiene más o menos la misma probabilidad de ir hacia un lado o hacia el otro. Para ver las reglas en sí mismas y no el ruido, cambia la columna a empates, donde todos los valores lo son. La regla de mitad hacia arriba queda entonces 500 por encima y la de mitad al par falla por 6.
-
Prueba la regla hacia abajo en la columna original para contrastar. Da 97.866, que se queda corta por 486. Esta regla le quita algo a casi cada valor en lugar de hacerlo solo en los empates, de modo que su desviación no necesita empates para acumularse.
-
Qué regla usar depende, por tanto, de lo que se esté protegiendo. Para un recibo único sirve cualquier regla de la mitad y la diferencia nunca supera la media unidad. A lo largo de un libro de cuentas, solo una regla sin dirección preferida deja el total en su punto de partida.
Respuesta
98.360 con mitad hacia arriba, 98.354 con mitad al par, 97.866 con regla hacia abajo, frente a los 98.351,63 reales. La tienda debería usar la mitad al par. No porque sea más precisa en un importe concreto, donde a veces es peor, sino porque sus errores carecen de dirección y no se acumulan. La mitad hacia arriba se equivoca por media unidad en cada empate que encuentra, hacia arriba y sin excepción.
-
-
1,005 con dos decimales, y el empate que no lo es 7 pasos
Redondea 1,005 a dos decimales. Averigua qué guarda de verdad la máquina cuando escribes eso y decide después si una hoja de cálculo que responde 1,00 se ha equivocado.
-
Como decimal es un empate: 1,005 está a la misma distancia de 1,00 que de 1,01, así que la regla de mitad hacia arriba lo manda hacia arriba y el panel imprime 1,01.
-
La máquina no guarda un decimal. Un double es una suma de potencias de dos, y 0,005 es una doscentésima, cuyo denominador lleva un 5² que ninguna potencia de dos puede aportar. El desarrollo binario no termina nunca.
-
Lo que se almacena es el double más cercano, y queda por debajo de 1,005 en unos 1,07 × 10⁻¹⁶. Comparado con exactitud, eso no es ningún empate, y la mitad hacia arriba lo mandaría abajo, a 1,00.
-
La diferencia se hace visible en cuanto el valor se escala para compararlo. 1,005 × 100 es 100,49999999999999, cuya parte fraccionaria se queda por debajo de un medio en 1,42 × 10⁻¹⁴.
-
Por eso el redondeo de aquí ajusta al empate. Todo lo que esté a menos de 8 pasos de máquina de un medio se trata como un medio, y a este tamaño esa ventana es de 1,79 × 10⁻¹³, más de diez veces más ancha que la diferencia. El panel responde a la pregunta que hiciste sobre el decimal, no a la que planteaba el binario.
-
La tolerancia no sale gratis, y la columna enseña lo que cuesta. Mil valores terminados en ,005, empujados cada uno media centésima hacia arriba, dejan el total 5,00 por encima de lo real. La mitad al par reparte esos mismos empates y se queda en 0,07.
-
Dos de los otros ajustes son de otra clase. 2,5 y 12,5 tienen forma binaria exacta, de modo que son empates dentro de la máquina además de sobre el papel y no interviene tolerancia alguna. «Exactamente la mitad» es una propiedad del decimal que escribiste, y solo sobrevive dentro de la máquina para las mitades que de verdad lo son.
Respuesta
1,01, y una hoja de cálculo que responde 1,00 acierta sobre el número que guarda y se equivoca sobre el número que escribiste. El valor almacenado está 1,07 × 10⁻¹⁶ por debajo de 1,005, así que una comparación exacta no ve empate alguno, y es el ajuste al empate lo que devuelve la respuesta al sitio donde un lector la espera. Ninguna regla de redondeo repara el problema de fondo. El dinero va en céntimos enteros, o en un tipo decimal, donde 1,005 es 1,005 y la pregunta ni siquiera surge.
-
Ruta de aprendizaje
Escribir un número
Referencias (2)
- Why half-to-even is the default rather than the rule taught in school, and what else the standard fixes: IEEE, "IEEE Standard for Floating-Point Arithmetic." IEEE Std 754-2019, 2019.
- The long-form explanation of why 1.005 is not stored as 1.005, and what follows from it: D. Goldberg, "What Every Computer Scientist Should Know About Floating-Point Arithmetic." ACM Computing Surveys 23(1), 5–48, 1991.