Преобразование в int
не будет работать, если число с плавающей запятой выходит за пределы диапазона int
.
Печать с "%.0f"
не усекается, она округляется, поэтому 4,75 напечатаетas 5
.
Если ваш компилятор (точнее, библиотека времени выполнения) поддерживает их, функции trunc()
, truncf()
и truncl()
, объявленные в <math.h>
, делают именно то, что выwant:
printf("%.0f\n", trunc(x));
Эти функции являются новыми в C99, поэтому возможно, что ваш компилятор их не поддерживает.C90 обеспечивает floor()
функцию;Вы можете использовать это, если напишите какой-нибудь специальный код для отрицательных чисел.