Ver Mensaje Individual
  #3  
Antiguo 21-08-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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.

Última edición por Ñuño Martínez fecha: 21-08-2006 a las 11:54:27.
Responder Con Cita