versión 2004.2 (Modificado)
Nota preliminar
Si usted no hace desarrollo multiplataforma, puede ignorar esta sección.
En el mundo de la informática, la aritmética de números decimales es más una tecnología que una ciencia exacta. Por ejemplo, usted aprendió en el colegio que un tercio (1/3) puede escribirse como una sucesión infinita de 3 después del punto decimal. Un ordenador, por otra parte, no sabe esto y debe calcular la expresión. De la misma forma, usted sabe conceptualmente que tres veces un tercio es igual a uno; un ordenador calcula la expresión para obtener el resultado. Dependiendo del tipo de ordenador que utilice, un tercio se calcula como un número limitado de tres después del punto decimal. Este número se llama la "precisión" de la máquina.
En los antiguos Macintosh de procesador de 68K, el número de precisión era igual a 19; esto significa que 1/3 se calcula con 19 dígitos significativos. En un equipo Windows o Power PC, este número es 15; de manera que 1/3 se muestra con 15 dígitos significativos. Si usted muestra la expresión 1/3 en la ventana del Depurador de 4D, obtendrá 0.3333333333333333333 en los Macintosh de 68K y 0.3333333333333333148 en Windows o Power PC. Note que los últimos tres dígitos son diferentes porque la precisión en Windows y Power PC es menor a la de los Macintosh de 68K. Sin embargo, si usted visualiza la expresión (1/3)*3, el resultado es 1 en ambos equipos.
Si sus cálculos corresponden al número de metros cuadrados de su jardín, a usted en realidad no le interesan los dígitos después del punto decimal. Por otra parte, si usted está llenando una declaración de renta, puede en ciertos momentos, preocuparse por la precisión de su ordenador. Sin embargo, recuerde que los 19 o 15 dígitos después del punto decimal son suficientes incluso si usted está manejando millones de dólares de rentas.
¿Por qué el valor 1/3 parece diferente en Macintosh con procesador 68K que en Power PC?
En los Macintosh de procesador de 68K, el sistema operativo almacena los números reales en 10 bytes (80 bits), mientras que en Windows y Power Macintosh, se almacenan en 8 bytes (64 bits). Esta es la razón por la cual hay 19 dígitos significativos en Macintosh de 68K y hasta 15 dígitos significativos en Windows y Power Macintosh.
Entonces, ¿por qué la expresión (1/3)*3 devuelve 1 en ambos equipos?
Un computador sólo puede hacer cálculos aproximados. Por lo tanto, cuando compara o calcula números, un computador no trata los números reales como objetos matemáticos si no como valores aproximados. En nuestro ejemplo, 0.3333... multiplicado por 3 da 0.9999...; la diferencia entre 0.9999... y 1 es tan pequeña que el equipo considera que el resultado es igual a 1, y por lo tanto devuelve 1. Para mayor información sobre este tema, consulte el comando SET REAL COMPARISON LEVEL.
Hay un comportamiento dual, entonces debe hacer distinción entre:
La manera cómo se calculan y comparan los números reales
La manera cómo se visualizan en la pantalla o se imprimen
Inicialmente, 4D manejaba los números reales utilizando el tipo estándar de 10 bytes correspondiente al sistema operativo de Macintosh de 68K. Por lo tanto, los valores reales guardados en el archivo de datos en el disco son guardados utilizando este formato. Para mantener la compatibilidad entre todas las versiones (Windows, Power Macintosh y Macintosh) de 4D, los archivos de datos siempre utilizan el mismo formato de 10 bytes. Como los cálculos internos se realizan en Windows o Power Macintosh utilizando el formato de 8 bytes, 4D convierte los valores de 10 bytes a 8 bytes, y vice versa. Por lo tanto, si carga un registro que contiene valores reales, el cual ha sido guardado en Macintosh de 68K, en Windows o Power Macintosh, es posible perder alguna precisión (de 19 a 15 dígitos significativos). Sin embargo, si usted carga un registro que contiene valores reales, el cual ha sido guardado en Windows o Power Macintosh, en un Macintosh de 68K, no habrá pérdida de precisión. Básicamente, si utiliza una base de datos en equipos con procesador de 68K, Power PC o Windows, cuenta con una precisión de 15 y no de 19 cifras significativas.
Con la ayuda del comando SET DATABASE PARAMETER, puede definir el número de dígitos a ignorar (4 por defecto) cuando visualice números reales.