Tengo un doble:¿Cómo redondear un doble al int más pequeño más cercano en C?
double d = 25.342;
¿Cómo puedo convertir a 25
valor?
Si fuera -12.46
me gustaría obtener -13
.
Tengo un doble:¿Cómo redondear un doble al int más pequeño más cercano en C?
double d = 25.342;
¿Cómo puedo convertir a 25
valor?
Si fuera -12.46
me gustaría obtener -13
.
int i = (int)floor(25.342);
Me gustaría que el resultado sea del tipo int –
Los problemas comienzan cuando el argumento para floor es> INT_MAX o
En ese caso, no se puede obtener una versión entera del piso del valor, por lo que realmente no importa. – jprete
int i = (int)floor(25.342);
Nota Esto convertirá a 12,99999 12.
Ref:
donde x es la int 25,342
i = x> = 0? (Int) (x + 0.5): (int) (x-0,5)
#include <math.h>
#include <stdio.h>
int main(){
double d = 25.342;
double e = -12.99;
printf("%d\n",(int)round(d)); // 25
printf("%d\n",(int)round(e)); // -13
return 0;
}
También es posible que desee echar un vistazo a stdint.h
Falla en muchos valores como '25.9' ya que no" redondea un doble al int más pequeño más cercano ". – chux
me gustaría que el resultado sea de tipo int –
Para el registro, lo que está pidiendo es redondear, no emitir. –
@Jon No, esto no está 'redondeando'. Redondear está transformando el número al entero "más cercano". – AraK