it-swarm.com.ru

C преобразовать число с плавающей точкой в ​​int

Я используюC(не C++).

Мне нужно преобразовать число с плавающей точкой в ​​int

13
SergSoftwares
my_var = (int)my_var;

Так просто. В принципе вам это не нужно, если переменная int.

23
Zach P

Используйте в C

int C = var_in_float;

Они будут конвертировать неявные

Спасибо

5
user3161739

Если вы хотите округлить его, вы можете сделать небольшую функцию или определение следующим образом:

#define FLOAT_TO_INT(x) ((x)>=0?(int)((x)+0.5):(int)((x)-0.5))

float my_float = 42.8f;
int my_int;
my_int = (int)my_float;          // => my_int=42;
my_int = FLOAT_TO_INT(my_float); // => my_int=43;

Будьте осторожны, в идеале вы должны проверить, что float находится между INT_MIN и INT_MAX, прежде чем использовать его.

3
AdriZ
double a = 100.3;
printf("%f %d\n", a, (int)(a* 10.0));

Output Cygwin 100.3 1003
Output MinGW: 100.3 1002

Использование (int) для преобразования double в int кажется небезопасным

Вы можете найти больше об этом здесь: Конвертировать double в int?

1
Legu