Excel - Error de Excel al calcular

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 10 puestos en Excel (en relación al último mes)
Gráfica de Excel

Error de Excel al calcular

Publicado por Juan Carlos (2 intervenciones) el 08/02/2020 02:25:48
Hola a todos.

Este es mi primer mensaje, aunque he recurrido al foro muchas veces. Os estoy agradecido y os felicito sinceramente.

Escribo porque me he encontrado con algo de Excel que nunca me había pasado y no he podido o sabido encontrar en el foro si ya se había tratado . Se trata de un error de cálculo del propio Excel que, creo, ofrece valores erróneos en cifras decimales alejadas pero que, en un IF, puede dar lugar a errores.

Adjunto un archivo de ejemplo y una imagen del mismo, a ver qué os parece.

Si este no es el sitio adecuado para este tipo de post, os ruego lo mováis y me disculpéis.

Gracias por todo.


_ErrorExcel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2
Ha aumentado su posición en 12 puestos en Excel (en relación al último mes)
Gráfica de Excel

Error de Excel al calcular

Publicado por Julio (1 intervención) el 08/02/2020 08:57:10
Hola.

Me inclino a pensar que eso no es un "error" de Excel, sino de la propia precisión en la que se guardan los números decimales en informática. Es un tema estudiado y puedes leer sobre precisión simple aquí o doble aquí.

Cuando se trabaja con números decimales no se asegura la exactitud de ellos. Por ejemplo, en el manual de PHP sobre el número decimal dicen todo ésto:


Los números de punto flotante tienen una precisión limitada. Aunque depende del sistema, PHP típicamente utiliza el formato de doble precisión IEEE 754, el cual dará un error relativo máximo por aproximación del orden de 1.11e-16. Las operaciones aritméticas elementales no podrán generar grandes errores y, por supuesto, se han de considrar los errores por propagación al componer varias operaciones.

Adicionalmente, los numeros racionales que son representables exactamente como números de punto flotante en base 10, como 0.1 o 0.7, no tienen una representación exacta como números de punto flotante en base 2, que es la base empleada internamente, sin importar el tamaño de la mantisa. Por lo tanto, no se pueden convertir en sus equivalentes binarios internos sin una pequeña pérdida de precisión. Esto puede conducir a resultados confusos: Por ejemplo, floor((0.1+0.7)*10) usualmente devolverá 7 en lugar del 8 previsto, ya que la representación interna será algo así como 7.9999999999999991118....

Por tanto, nunca se ha de confiar en resultados de números flotantes hasta el último dígito, y no comparar la igualdad de números de punto flotante directamente. Si fuera necesaria una mayor precisión, están disponibles las funciones matemáticas de precisión arbitraria y las funciones de gmp.


Y aquí también dicen cosas, por ejemplo ésto:

1
2
3
4
5
6
So you’ve written some absurdly simple code, say for example:
 
	0.1 + 0.2
and got a really unexpected result:
 
	0.30000000000000004

Por tanto, imagino que lo que pasa en el Excel es este tipo de problema de representación, con lo que siempre hay que tener cuidado con números con muuuuuchos decimales.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 10 puestos en Excel (en relación al último mes)
Gráfica de Excel

Error de Excel al calcular

Publicado por Juan Carlos (2 intervenciones) el 08/02/2020 12:56:19
Gracias Julio.

Entiendo lo que me dices, pero lo que me extrañó es que sólo resto 3.4 menos 3.3, nada más. Cierto es que el 3.4 lo obtengo con la función promedio, que internamente puede dar lugar a esas imprecisiones. De hecho, si sustituyes el,promedio que da 3.4 por su valor, introduciéndolo a mano, el error desaparece. Pero no ocurre lo mismo con todos los valores, lo cual me desconcertó, ya que la simple resta de 3.1 menos 3.0, siendo ambos números introducios a mano, continúa con la imprecisión. Debe de ser por lo que comenta el artículo que me comentas de que 0.1 en binario no tiene representación exacta y a veces funciona y a veces no dependiendo de los otros números que intervengan. Habrá que andarse con ojo.

Muchísimas gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar