CodeGym/Blog Java/Random-ES/Palabra clave flotante de Java
John Squirrels
Nivel 41
San Francisco

Palabra clave flotante de Java

Publicado en el grupo Random-ES
En algún momento del desarrollo de la tecnología informática, quedó claro que las unidades centrales de procesamiento necesitaban dispositivos de hardware para procesar números de punto flotante. Hoy en día, todas las arquitecturas informáticas pueden funcionar eficazmente con esos números. Por supuesto, en los lenguajes de programación tampoco se puede prescindir de los tipos de datos correspondientes. Hay dos tipos de datos de punto flotante en Java: flotante y doble. La palabra clave Java Float define un número real que ocupa 32 bits en la memoria. Hablaremos de estos números en este artículo.

Números de punto flotante. ¿Cómo se almacenan los números reales en una computadora?

Para almacenar números reales en la memoria de la computadora, se asigna una cierta cantidad de bits. Un número real se almacena como signo (más o menos), mantis y exponente. Qué es la mantisa y el exponente se explica mejor con un ejemplo. La masa aproximada de la luna es 7* 1022. Aquí 7 es la mantis, en 22 el exponente. Cuando se muestran números grandes o viceversa, muy pequeños en la pantalla, puede ver una entrada como 7E22. Este es el número de coma flotante, 7 aquí es la mantis y 22 es el exponente o potencia de 10. Esta notación se llama notación exponencial.

Palabra clave flotante de Java y palabra clave doble de Java

Los valores flotantes (números de coma flotante o números reales) en Java están representados por los tipos float y double . Son estas palabras clave las que se utilizan para almacenar valores hasta un determinado signo después del punto decimal. double son números con doble precisión, lo más cercanos posible a los valores dados u obtenidos como resultado de los cálculos. Java Double se utiliza para cualquier cálculo matemático (raíz cuadrada, seno, coseno, ...), así como para todos los cálculos en los que una cierta precisión es importante. El tipo de datos flotante se utiliza para un tipo de punto flotante menos preciso. Se utiliza muy raramente para ahorrar memoria. A continuación tenemos una tabla con la información principal sobre float y double, así como sus diferencias.
Flotar Doble
Principal Float es un valor de precisión simple Es un valor de doble precisión.
Tamaño predeterminado 4 bytes (32 bits) 8 bytes (64 bits)
Valor por defecto 0.0f 0.0
Rango de 1.4e–045 a 3.4e+038 de 4.9e–324 a 1.8e+308
Para que se utiliza Para ahorrar memoria trabajar con números fraccionarios con relativa precisión
Entonces, la palabra clave Float significa un número, un valor de precisión simple que ocupa 32 bits o 4 bytes en la memoria. En algunos procesadores, trabajar con estos números es más rápido y, como ya se mencionó, ocupan menos espacio en comparación con números con doble precisión. Sin embargo, es imposible decirlo de manera inequívoca sobre la velocidad. Digamos que algunos procesadores modernos procesan números de exactamente el doble de precisión más rápido.

Flotador de Java y doble declaración

Puedes declarar un número de tipo double de la misma forma que los números de otros tipos:

double myDouble = 2.7;
Sin embargo, si representa un número de punto flotante de esta manera, el compilador le pedirá que cambie el tipo de número a doble. Aquí hay un ejemplo incorrecto de variable flotante :

public class FloatExample {
   public static void main(String[] args) {
//double and float variables 
       double myDouble = 2.7;
       float myFloat = 3.14;
   }
}
Esto es lo que sucede si ejecuta este programa:

Error:(4, 25) java: incompatible types: possible lossy conversion from double to float
El hecho es que no es deseable utilizar números flotantes y esto debe hacerse únicamente para ahorrar memoria. Todos los números fraccionarios reales en Java son dobles por defecto y la sintaxis del lenguaje también enfatiza esto. Si realmente desea trabajar con el tipo flotante, debe especificarlo explícitamente con una f que termine en el número.

public class FloatExample {
   public static void main(String[] args) {
//double and float variables
       double myDouble = 2.7;
       float myFloat = 3.14f;
   }
}
Por cierto, los números flotantes y dobles se pueden escribir en forma exponencial.

float myFloat2 = 2E22f;
double myDouble2 = 3e10;
Si utiliza números suficientemente grandes en su representación "normal", Java los mostrará inmediatamente en forma exponencial. Pongamos un ejemplo:

public class FloatExample {
   public static void main(String[] args) {
//float variables
               float myFloatNumber1=2182818284590.45f;
               float myFloatNumber2=19822612787260.141592181f;
               System.out.println("myFloatNumber1 = " + myFloatNumber1);
               System.out.println("myFloatNumber2 = " + myFloatNumber2);
       System.out.println("myFloatNumber1 + myFloatNumber2 = " + myFloatNumber1 + myFloatNumber2);
           }
       }
El resultado del trabajo de este programa está aquí:
myFloatNumber1 = 2.1828183E12 myFloatNumber2 = 1.98226121E13 myFloatNumber1 + myFloatNumber2 = 2.1828183E121.98226121E13

Ejemplo de números flotantes y dobles especiales

Hay tres números de punto flotante especiales en el lenguaje Java que se utilizan para indicar desbordamientos y errores. Aquí están:
  • El infinito positivo es el resultado de dividir un número positivo entre 0. Representado por las constantes Double.POSITIVE_INFINITY y Float.POSITIVE_INFINITY .

  • El infinito negativo es el resultado de dividir un número negativo entre 0. Representado por las constantes Double.NEGATIVE_INFINITY y Float.NEGATIVE_INFINITY .

  • NaN (no es un número) representa el cálculo de 0/0 o la raíz cuadrada de un número negativo. Representado por las constantes Double.NaN y Float.NAN .

A continuación se muestra un ejemplo del uso de estos números de punto flotante especiales:

public class FloatExample {
   public static void main(String[] args) {
       int myInt = 1;
       float zero = 0.0f;
       double negZero = -0.0;
       double negativeInfinity = Double.NEGATIVE_INFINITY;
       double positiveInfinity = Float.POSITIVE_INFINITY;

       System.out.println(myInt / zero);
       System.out.println(myInt / negZero);
       System.out.println(zero == negZero);
       System.out.println(negativeInfinity * 0);
       System.out.println(positiveInfinity+negativeInfinity);

   }
}
El resultado es:
Infinito -Infinito verdadero NaN NaN

¿Es suficiente la doble precisión?

De hecho, a pesar de la doble precisión del tipo Double , utilizar números de coma flotante, por ejemplo, en cálculos financieros, no es la mejor idea porque los errores de redondeo son inaceptables. Entonces, intente mostrar el resultado del siguiente programa en la pantalla.

public class FloatExample {
   public static void main(String[] args) {
       System.out. println( "2.0 - 1.1 = " + (2.0 - 1.1));
   }
}
Obtendrás el siguiente resultado:
2,0 - 1,1 = 0,8999999999999999
Sería lógico suponer que el resultado será 0,9. Sin embargo, estos errores son bastante comunes y están asociados con la representación binaria interna de los números. No podemos, por ejemplo, representar el valor exacto de ⅓ como una fracción decimal; Por supuesto, existen restricciones similares en el sistema binario. Si la tarea requiere eliminar errores de redondeo, Java tiene la clase BigDecimal para ello.
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios