Multiplicar un entero por un decimal en C

smintcs

Hola

Estoy aprendiendo C,por lo que no se mucho todavia, pero mirando lo de multiplicar me ha salido un problema.

Quiero multiplicar un numero entero, por un decimal, pero que me de el resultado normal no como me lo da.

El código es este:

#include <stdio.h>
#include <conio.h>

int main()
{
int a = 800;
float b = 0.16;
float c;
c = a * b;
printf( "c = %f", c );
getch();
return 0;
}

Haciendolo así me sale bien pero en vez de 128, me sale 128.0000000000

Hay alguna manera de que no me salga así con los ceros y me salga solo el resultado o siempre sale asi?

Gracias

Z

Prueba convirtiendo el resultado a un int, no me acuerdo como era, pero creo que se podía hacer... ¿no?

Nemox

Si no me equivoco, te sale ese resultado porque el compilador lo que hace antes de multiplicar es una conversión de tipos de datos.

Como el tipo float tiene más precisión que el entero, antes de multiplicar convierte el entero a float y por eso el resultado te lo devuelve como float también.

smintcs

si los pongo en tipo int me da 0

LoRTH

Puedes decir el numero maximo de decimales que quieres.

En el printf(), el %f cambialo por %.0f (el numero es para el numero de decimales. Supongo que con el 0 funcionara...)

smintcs

sí ahora ya me funciona gracias

javithelong

si le haces un casting a int, tambien te valdrá.

En el printf pones %d, y en la variable, justo delante, pones (int) y yata :P

Usuarios habituales