Cita:
Empezado por avmm2004
El primer showmessage da 0 y el siguiente da 9,09494701772928E-13 .
EL valor correcto es 0.
¿ es un tremendo fallo ?
¿ es mi ignorancia ?
¿ es azar ?
¿ es delphi 2006 ?
|
Bueno, el error no es tan grande, ya que en lenguaje humano el resultado es 0'000000000000909494791772928, vamos que es casi 0. No he hecho la prueba, pero tal vez el error se deba, precisamente, a que se está usando Double. Este tipo utiliza un sistema de codificación denominado "punto flotante" que permite almacenar un ámplio rango de números (desde tremendamente grandes hasta tremendamente pequeños) y facilita los cálculos pero a costa de perder precisión y exactitud en algunos casos.
Otro sistema de codificación, denominado "punto fijo", podría dar el resultado correcto, pero no permitiría almacenar ciertos números; por ejemplo, le resultaría imposible almacenar el número 0'1.
Un tercer método denominado "binario codificado en decimal" permite mucha más precisión (hasta llegar a la exactitud), pero para almacenar números grandes necesita mucha más memoria que los dos anteriores.
Si esto es cierto, el problema no es del lenguaje ni del compilador sino del microprocesador.