Saltar la navegación

3.1.1.- Tipos de datos primitivos II.

Evolución de los lenguajes de programación desde el hexadecimal y ensambladro hasta Java, pasando por C, Fortran y C++.
dullhunk (CC BY-NC)

El tipo de dato real permite representar cualquier número con decimales. Al igual que ocurre con los enteros, la mayoría de los lenguajes definen más de un tipo de dato real, en función del número de bits usado para representarlos. Cuanto mayor sea ese número:

  • Más grande podrá ser el número real representado en valor absoluto.
  • Mayor será la precisión de la parte decimal.

Entre cada dos números reales cualesquiera, siempre tendremos infinitos números reales, por lo que la mayoría de ellos los representaremos de forma aproximada. Por ejemplo, en la aritmética convencional, cuando dividimos 10 entre 3, el resultado es 3.3333333…, con la secuencia de 3 repitiéndose infinitamente. En el ordenador sólo podemos almacenar un número finito de bits, por lo que el almacenamiento de un número real será siempre una aproximación.
Los números reales se representan en coma flotante, que consiste en trasladar la coma decimal a la primera cifra significativa del valor, con objeto de poder representar el máximo de números posible.

Un número se expresa como: Valor igual a mantisa por dos elevado a exponente.

En concreto, sólo se almacena la mantisa y el exponente al que va elevada la base. Los bits empleados por la mantisa representan la precisión del número real, es decir, el número de cifras decimales significativas que puede tener el número real, mientras que los bits del exponente expresan la diferencia entre el mayor y el menor número representable, lo que viene a ser el intervalo de representación.

En Java las variables de tipo float se emplean para representar los números en coma flotante de simple precisión de 32 bits, de los cuales 24 son para la mantisa y 8 para el exponente. La mantisa es un valor entre -1.0 y 1.0 y el exponente representa la potencia de 2 necesaria para obtener el valor que se quiere representar. Por su parte, las variables tipo double representan los números en coma flotante de doble precisión de 64 bits, de los cuales 53 son para la mantisa y 11 para el exponente.

La mayoría de los programadores en Java emplean el tipo double cuando trabajan con datos de tipo real, es una forma de asegurarse de que los errores cometidos por las sucesivas aproximaciones sean menores. De hecho, Java considera los valores en coma flotante como de tipo double por defecto.

Con el objetivo de conseguir la máxima portabilidad de los programas, Java utiliza el estándar internacional IEEE 754 para la representación interna de los números en coma flotante, que es una forma de asegurarse de que el resultado de los cálculos sea el mismo para diferentes plataformas.

Formato de representación o normativa cuyo objetivo es estandarizar el uso de la representación de números en coma flotante entre distintos fabricantes. Está desarrollado por el IEEE (Institute of Electrical and Electronics Engineers, en español Instituto de Ingenieros Eléctricos y Electrónicos).

Para saber más

En la siguiente página puedes encontrar documentación sobre el estándar IEEE 754. Contiene enlaces a herramientas para trabajar con el estándar en la sección "Enlaces Externos"

Autoevaluación

Relaciona los tipos primitivos con los bits y rango de valores correspondientes, escribiendo el número asociado en el hueco correspondiente.
Ejercicio de relacionar
Tipo Relación Característica
short Coma flotante de 64 bits, usando la representación IEE754-2008
byte Entero de 32 bits, rango de valores de -2.147.483.648 (-231) a 2.147.483.647 (+231-1)
double Entero de 16 bits, rango de valores de -32.768 (-215) a +32.767 (+215-1)
long Coma flotante de 32 bits, usando la representación IEEE 745-2008
int Entero de 8 bits, rango de valores de -128 (-27) a +127 (+27-1)
float Entero de 64 bits, rango de valores de -9.223.372.036.854.775.808 (-263)
a 9.223.372.036.854.775.807 (+263-1)

Habilitar JavaScript