[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