Tal vez, es una pregunta muy simple pero no pude obtener la respuesta. He estado buscando un buen tiempo (ahora Google piensa que estoy enviando consultas automatizadas http://twitter.com/michaelsync/status/17177278608) ..C++ float to int
int n = 4.35 *100;
cout << n;
¿Por qué se convierten en la salida "434" en lugar de "435"? 4.35 * 100 = 435 que es un valor entero y esto debería ser asignable a la variable entera "n", ¿verdad?
O ¿El compilador de C++ emite 4.35 enteros antes de multiplicar? Creo que no. ¿Por qué el compilador cambia automáticamente 4.35 a 4.34 que sigue siendo un flotador?
Gracias.
¿Cómo sería el resultado de 434 si 4.35 se convierte en un 'int' antes de la multiplicación? ¿No sería eso 400? Solo para descartar una de tus explicaciones. – pmr
si lo hizo 'int y = (int) (4.35 * 100);' no lo haría; si va a llamar a una función, puede elegir una adecuada para obtener la respuesta que necesita, que también podría hacer en C++. Pero en el código de ejemplo no está llamando a una función, está utilizando la conversión de tipo implícita proporcionada por el idioma. –
4.35 no es exactamente representable. El siguiente valor doble más cercano parece ser (en su caso) 4.34999 ... que, multiplicado por 100, da como resultado 434.999 ... y por lo tanto se convierte en 434. – sellibitze