División en C ++ no funciona como se esperaba

Estaba trabajando en otra cosa, pero todo salió como cero, así que hice este ejemplo minimalista, y la salida sigue siendo 0.

#include  int main(int argc, char** argv) { double f=3/5; std::cout << f; return 0; } 

¿Qué me estoy perdiendo?

Te estás perdiendo el hecho de que 3 y 5 son números enteros, por lo que obtendrás una división entera. Para hacer que el comstackdor realice la división de punto flotante, convierta uno de ellos en un número real:

  double f = 3.0 / 5; 

No necesita ser .0 , también puede hacer 3./5 o 3/5. o 3e+0 / 5 0xCp-2 / 5 o 3 / 5e-0 o 0xCp-2 / 5 o … Solo necesita haber un indicador involucrado para que el comstackdor sepa que se supone que debe realizar la división como punto flotante.

Otra posibilidad: double f=double(3)/5 . Eso es mucho más tipeo, pero no deja dudas sobre lo que estás haciendo.

O simplemente use double f=.6 , que también hace el truco …

prueba esto:

 double f = 3.0/5.0; 

esto debería arreglar tu problema

Intenta poner un .0 después de uno de los divisores. Esto los convertirá en literales de coma flotante.

Estás usando números enteros. Puede hacer muchas cosas para hacer que sus constantes se dupliquen, como en los estados contiguos, pero eso no es bueno. Es difícil de leer y confuso. Si quiere 3 y 5, hágalos 3.0 y 5.0. Todos sabrán a qué te refieres si se ven obligados a leer tu código. Gran parte de lo que afirma realmente requiere que conozcas C / C ++ y cómo las carrozas son de almacenamiento para formar cara o cruz.