Chisme 173 del Lince: el resultado raro

Un programa sin errores que da un número extraño

Logo de MonteSTEAMLogo de AIDARACLogo de IES Monterroso

El Lince tiene un pluviómetro en Sierra Bermeja: una noche recoge 9.8 mm de lluvia. Han sido 3 noches iguales. Multiplica y mira qué escribe Python. Tu misión: ejecutar el programa y fijarte en cada línea.

Haz esto: (1) Pulsa «Ejecutar paso a paso». (2) Mira la caja negra (lo que muestra) y la caja de memoria (lo que Python tiene guardado). (3) Cambia de caso con los botones. (4) Prueba tus propias cuentas abajo.

El programa y lo que ocurre

Caso:

Programa en Python

Lo que muestra print

Lo que Python tiene guardado

—(aún no se ha ejecutado nada)

Haz tus propias cuentas

Escribe una cuenta como en Python (con + - * /, paréntesis, round( , ) y ==). Ejemplo: 0.1 + 0.2

Este simulador imita a Python con números decimales: da los mismos resultados que PyCharm en estos casos.

Preguntas de comprobación

1. ¿Qué número escribe print(total) en el primer caso? ¿Es el que esperabas?

Escribe 29.400000000000002. Esperabas 29.4. El programa no ha dado ningún error.

2. Si print(round(total, 2)) escribe 29.4, ¿qué valor tiene total después?

El mismo de antes: 29.400000000000002. round cambia lo que se muestra, no lo que está guardado en total.

3. ¿Por qué total == 29.4 da False, aunque «a ojo» sean iguales?

Porque Python compara los números tal como los tiene guardados, y el guardado es un poquito distinto de 29.4.

Y ahora, una pregunta

El programa no ha fallado: ha hecho exactamente la multiplicación. Pero el resultado no es el que tú esperabas. ¿Falla el programa o falla lo que esperamos de él?

Eso lo resolvemos en clase. Todo ocurre en tu navegador y no se envía ningún dato.