¿Cómo puedo cortar decimales en C sin redondear?Cómo cortar decimal sin redondeo en C
Por ejemplo, si el número es 4.48
se acaba de mostrar 4.4
%.1f
rondas para 4.5
¿Cómo puedo cortar decimales en C sin redondear?Cómo cortar decimal sin redondeo en C
Por ejemplo, si el número es 4.48
se acaba de mostrar 4.4
%.1f
rondas para 4.5
Aquí está una manera simple:
printf("%.1f",trunc(x*10.0)/10.0);
Esto debería funcionar
double d = 4.48;
d *= 10.;
int i = d;
d = (double) i/10.;
Puede (ab) usar el hecho de que trunca división entera y no redonda:
float original = 4.48;
int tmp = original * 10; // 44.8 truncated to 44
float truncated = tmp/10.0; // 4.4
Para evitar el desbordamiento de conversiones 'int', use' trunc *() 'como se responde [aquí] (https://stackoverflow.com/a/12764022/2410359). Aún puede tener problemas de borde. – chux
Probablemente más seguro con '% .1f'. –
@DanielFischer: modificado –