Esas constantes son enteros, por lo que las matemáticas se hacen con números enteros. Trate
float p1 = (6.0/100.0);
edición — @Stephen Canon señala sabiamente que, dado que "P1" es una float
, no hay razón para no hacer todo el cálculo que float
:
float p1 = (6.0f/100.0f);
Ahora, dado que los las cosas son constantes, me imagino que hay muchas posibilidades de que el compilador vaya a hacer el trabajo de todos modos. También es cierto que, debido a que en algunas máquinas modernas (es decir, arquitectura Intel), el conjunto de instrucciones del procesador de punto flotante es lo suficientemente extraño como para que algo que parece una "optimización" obvia pueda funcionar o no de esa manera. Finalmente supongo que podría ser el caso que haciendo la operación con las constantes float
podría (en algunos casos) dar un resultado diferente que haciendo la operación con double
valores y luego fundir a float
, que de ser cierto sería probablemente el mejor argumento para decidiendo de una forma u otra.
gracias, eso fue todo. –
En realidad debería aceptar la respuesta si contestó su pregunta. – imaginaryboy
Pero use literales de precisión simple para evitar una conversión innecesaria de doble a simple: 'float p1 = 6.0f/100.0f' –