Comparación de tipos primitivos dobles y flotantes en Java

Considere los siguientes dos códigos en Java:

// This program prints true
class Geeksforgeeks {
  public static void main(String args[]) {
    float f = 5.25f;
    double d = 5.25
    System.out.println(f == d);
  }
}

Producción

true
// But this program prints false.
class Geeksforgeeks {
  public static void main(String args[]) {
    float f = 5.1f;
    double d = 5.1;
    System.out.println(f == d);
  }
}

Producción

false

La salida es verdadera en el primer ejemplo y falsa en el segundo. Sabemos que las precisiones de float y double son diferentes. El tamaño de la mantisa para float es 24 y 53 para doble.

Consideremos el primer ejemplo de 5.25. La representación binaria de la parte integral es 101 y la representación binaria de parte del punto es 0.01 (solo necesita dos bits)

Consideremos el segundo ejemplo 5.1. La representación binaria de una parte integral es la misma. Pero la representación binaria de 0.1 es 1/16 + 1/32 + 1/64 + 1/128… y así sucesivamente hasta llegar al final de la mantisa o la suma se vuelve más de 0.1. En este caso, llegamos al final de la mantisa y por lo tanto el valor de 5.1 se vuelve diferente en float y double.

Publicación traducida automáticamente

Artículo escrito por Niraj_Pandey y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *