Cómo solucionar este problema?
¿Qué actual Problema ¿quieres resolverlo? Su código solo muestra que los números de coma flotante tienen una precisión limitada, eso no es nada nuevo.
Para la mayoría de las aplicaciones del mundo real, la entrada que no es 100% precisa de todos modos, y el resultado solo necesita ser preciso con un par de decimales. Las comparaciones de igualdad simplemente no son algo que necesites la mayor parte del tiempo. Si lo hace, puede cambiar el color al ver si el resultado está dentro de una pequeña distancia predefinida de un número determinado.
Si necesita matemáticas decimales con precisión específica, use las funciones BC Math, pero tenga en cuenta que son muy lentas si se utilizan para cálculos complejos.
Esta es la naturaleza de los números de coma flotante en general, entonces, ¿qué tiene que ver con el estándar IEEE 754? –
PHP está escrito en C y obtiene su soporte de FP a partir de eso, y la mayoría de los tiempos de ejecución C usan IEEE 754. Además, IEEE 854 usa una raíz variable y puede admitir más precisión para algunos números a costa de cierta velocidad de procesamiento cuando calculando con ellos. –
Es la naturaleza de los números de coma flotante en general. El valor de épsilon (aquí 0.000000001) depende del número de bits que representan el float. – slebetman