2012-09-16 24 views
35

Duplicar posible:
Why can't I return a double from two ints being dividedLa división de dos números enteros para producir un resultado float

Mi programa en C++ es truncar la salida de mi devisiones entero par cuando intento y colocar el resultado en un flotador. ¿Cómo puedo evitar esto mientras mantengo esas variables (a & b) como números enteros?

[email protected]:~/c/precision$ cat precision.cpp 
#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    int a = 10, b = 3; 
    float ans = (a/b); 
    cout<<fixed<<setprecision(3); 
    cout << (a/b) << endl; 
    cout << ans << endl; 
    return 0; 
} 

[email protected]:~/c/precision$ g++ -o precision precision.cpp 
[email protected]:~/c/precision$ ./precision 
3 
3.000 
+1

flotador ans = ((float) a/b); (o static_cast para complacer a los puristas) – Vlad

+0

Sí, me equivoqué, hice una búsqueda pero no encontré esa publicación. Es un dup, mi mal! – jwbensley

Respuesta

60

moldeada los operandos a flotadores:

float ans = (float)a/(float)b; 
+0

Además, los flotadores solo tienen tanta precisión. Es posible que la división entera requiera la "doble precisión" de un "doble" –

+15

Estrictamente hablando, solo necesita convertir un entero para flotar, aunque esto lo hace más claro. – Gerard

+0

'INT K; \t K/3; 'Here'/'llamará a la clase' INT', entonces ¿cuál es la razón detrás del lanzamiento de un int nomer o denominador int funcionará? – UnKnown

Cuestiones relacionadas