Cómo asegurarse de que no tiene problemas: aprenda sobre problemas aritméticos de punto flotante, o contrate a alguien que lo tenga, o use algo de sentido común.
El primer problema es la precisión. En muchos idiomas tiene "flotante" y "doble" (doble posición para "doble precisión"), y en muchos casos "flotante" le da una precisión de aproximadamente 7 dígitos, mientras que el doble le da 15. El sentido común es que si tiene un situación en la que la precisión podría ser un problema, 15 dígitos es muchísimo mejor que 7 dígitos. En muchas situaciones ligeramente problemáticas, usar "doble" significa que te saldrás con la tuya, y "flotar" significa que no. Digamos que la capitalización de mercado de una empresa es de 700 mil millones de dólares. Representa esto en flotante, y el bit más bajo es $ 65536. Represente usando doble, y el bit más bajo es de aproximadamente 0.012 centavos. Entonces, a menos que realmente sepas lo que estás haciendo, usarás doble, no flotante.
El segundo problema es más una cuestión de principios. Si hace dos cálculos diferentes que deberían dar el mismo resultado, a menudo no lo hacen debido a errores de redondeo. Dos resultados que deberían ser iguales serán "casi iguales". Si dos resultados están juntos, los valores reales pueden ser iguales. O tal vez no lo sean. Debe tener eso en cuenta y debe escribir y usar funciones que digan "x es definitivamente mayor que y" o "x es definitivamente menor que y" o "x e y podrían ser iguales".
Este problema empeora mucho si usa el redondeo, por ejemplo, "redondear x al entero más cercano". Si multiplica 120 * 0.05, el resultado debería ser 6, pero lo que obtendrá es "algún número muy cercano a 6". Si luego "redondea al número entero más cercano", ese "número muy cercano a 6" podría ser "ligeramente menor que 6" y redondearse a 5. Y tenga en cuenta que no importa la precisión que tenga. No importa qué tan cerca de 6 esté su resultado, siempre que sea menor que 6.
Y tercero, algunos problemas son difíciles . Eso significa que no hay una regla rápida y fácil. Si su compilador admite "doble largo" con más precisión, puede usar "doble largo" y ver si hace la diferencia. Si no hay diferencia, entonces estás bien o tienes un problema realmente complicado. Si hace el tipo de diferencia que esperarías (como un cambio en el 12º decimal), entonces probablemente estés bien. Si realmente cambia sus resultados, entonces tiene un problema. Pedir ayuda.