[C con Clase] Pregunta sobre variables float y double

Steven R. Davidson vze266ft en verizon.net
Jue Mar 20 22:58:00 CET 2008


Hola David,

David Reza wrote:
> Sinceramente no entendí mucho de lo que leí ahí. Qué es una constante 
> simbólica?
> 

Una constante simbólica es aquella definida por #define. Por ejemplo,

#define A
#define B 32

Algunas personas las llaman macros, pero puede provocar confusión con el 
otro uso de #define al crear símbolos que aparentan "funciones". Por 
ejemplo,

#define C(a) ((a)*(a))

'A' y 'B' son constantes simbólicas, mientras que 'C()' es una macro.

> Podrías tú explicarme lo del enlace?
> 
> No comprendo lo de q, b y p ni nada de nada.
> 

Es una explicación formal; quizá más formal de lo que debería ser. Venía 
a explicar que,

q : cantidad de dígitos decimales,
p : la base numérica del valor 'float',
b : cantidad de dígitos de tal valor 'float' de base 'p'.

Si obviamos lo anterior, básicamente, la explicación es la siguiente:

FLT_DIG es la cantidad de dígitos decimales los cuales no serán 
alterados si aplicáramos un método de redondeo.

En el caso de 'float', esto viene a ser 6 dígitos decimales. Por ejemplo,

float f = 0.123456789;

Podemos asegurar que la parte 0.123456 será invariable, pero el resto 
puede ser modificado por motivos de redondeo. Al fin y al cabo, 'float' 
no tiene mucha precisión y además internamente la base es 2, como indica 
la constante 'FLT_RADIX'.

Para saber más, tendrías que meterte de lleno en la representación de 
números de coma flotante. Es algo lioso, pero si de verdad lo necesitas 
o quieres saber su funcionamiento, entonces busca información acerca del 
estándar IEEE 75. Un enlace que explica a fondo este estándar es: 
http://steve.hollasch.net/cgindex/coding/ieeefloat.html  como también 
es: http://en.wikipedia.org/wiki/IEEE_floating-point_standard


Espero que esto te guíe.

Steven






Más información sobre la lista de distribución Cconclase