Java maneja
diferentes rangos de valores: float,
y double. Lo normal, mientras no se indique lo
contrario, es trabajar con reales double.
Los números
reales se caracterizan por
·
un
valor máximo, que es el máximo valor absoluto que se puede representar
·
un
valor mínimo, que es la mínima diferencia entre dos números reales (precisión)
Notación
Un valor real se
indica por medio de
·
un
signo; si no se indica, se presume que el valor es positivo
·
una
mantisa; que es una serie de dígitos decimales, posiblemente con un punto para
indicar la posición de la coma decimal
·
un
exponente, que es opcional (si no se indica se presume que el exponente es 1);
si aparece viene precedido de la letra 'E' y será un valor entero en notación
decimal
Ejemplos:
· 3.1416, pi
· 2.5E3, dos mil quinientos
· -1E-12, una millonésima
Si no se dice nada, el valor se interpreta con formato “double”. Si se quiere forzar la representación:
·
para
que el valor sea “float”, debe terminarse con la letra “f” o “F”:
·
1f,
que es la unidad en representación “float”
·
para
que el valor sea “double”, debe terminarse con la letra “d” o “D”:
·
1d,
que es la unidad en representación “double”
¿Qué pasa si nos
salimos de rango?
class
Reales |
public
class Reales { public static void main(String[] args) { double n = Double.MAX_VALUE; System.out.println("n= " + n); System.out.println("2n= " + 2*n); // overflow System.out.println(); n = Double.MIN_VALUE; System.out.println("n=
" + n); System.out.println("n/2= " +
n/2); // underflow } } |
n= 1.7976931348623157E308 2n= Infinity n= 4.9E-324 n/2= 0.0 |
Ver "Desbordamiento" y "Underflow".
¿Qué tipo de
reales debo usar?
Java tiene un
especial cariño por los "double". Todos los números con cifras
decimales los interpreta como "double", salvo que se le indique lo
contrario.
Lo más normal es
que todos los reales sean de tipo "double", salvo que haya una
necesidad evidente de recurrir a otro tipo:
"float",
porque tenemos muchísimos valores con valores pequeños
Temas relacionados