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:
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