2

estoy aprendiendo los tipos de datos en C++ y tengo una duda. ¿Qué diferencia entre float y double en C++?

Sé que la precisión es doble en el caso del double, no la aprecio en la salida de la consola. También sé que float puede albergar 7 dígitos (¿en decimales o el número entero más los decimales?) y que double puede 15.

Pues eso, no les veo la diferencia a la hora de probarlos en la consola.

float numeroFloat = 569.64895769;
double numeroDouble = 569.64895769;

cout << numeroFloat << endl;
cout << numeroDouble;

La salida es la misma en ambos casos:

569.649

569.649

a_dev
  • 169
  • 7
  • El tamaño en memoria de cada uno de esos tipos es diferente. `float` ocupa 32 bits mientras que `double` ocupa 64 bits. Esto afecta a la cantidad de números diferentes que "caben" en cada uno de estos formatos. En `double` se pueden almacenar números más grandes y también más decimales. Con los números que has probado no se ve diferencia porque `cout < – abulafia Feb 10 '22 at 19:44
  • [Esta respuesta](https://es.stackoverflow.com/a/165189/7123) puede iluminarte, y [esta otra](https://es.stackoverflow.com/a/276344/7123) también es relevante aunque sea C y no C++ – abulafia Feb 10 '22 at 19:46
  • Como te lo han explicado quizas de igual manera te puede interesar que para el uso de sistemas que conlleven un conteo bancario en JAVA se usa el BigDecimal, no es primitivo es una clase externa pero que ayuda a no generar posibles perdidas de centavos por el uso de tipos de datos como "float" o "double" – Nicolas Romero Feb 10 '22 at 20:00

2 Answers2

3

La diferencia entre double y float esta dada en 2 aspectos claves q es la diferencia en su tasa de bits mientras q float q usa 32 bits puede almacenar cerca alrededor de 7 decimales el double de 64 bits almacena hasta 15 dígitos, además q la hora de procesar números infinitos o de gran tamaño hay un gran margen de error si los calculas usando float por supuesto hay números tan grandes q ni si quiera el double acepta y es cuando hay q recurrir a los long double lo q notar una diferencia fuera de esto es algo difícil dado q el resultado exacto de estos decimales puede verse afectado por el auto redondeo del IDE q uses.

Lioner_025
  • 46
  • 3
  • 1
    ¡Perfecto! Visual Studio 2022, estaba haciendo redondeo así como quería (me saca por defecto 2 decimales, por muchos que tenga el float o el double). Lo tengo en cuenta. – a_dev Feb 10 '22 at 20:09
  • 1
    El único detalle es que el tipo `long double` compilado con MSVC, se implementa de la misma manera que `double`, siendo equivalentes. Así que si quieres mayor precisión toca cambiar de compilador. – Mateo Feb 10 '22 at 21:20
2

Ambos tipos de datos permiten codificar números reales.

Las únicas diferencias son que los literales de float se escriben con un punto y una f al final. Por ejemplo 1.0f. Y que double tiene más precisión que float por ende ocupa más memoria.

Quizá te resulte útil:

https://en.cppreference.com/w/cpp/language/types

Mateo
  • 2,699
  • 1
  • 5
  • 19