C Academy · Урок

Округление и абсолютные значения

Используйте floor, ceil, round и fabs.

Урок 4 из 413 шагов

«Округление и абсолютные значения» — бесплатный урок C Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 4 уроков всего.

Округление и абсолютные значения

В этом уроке рассматриваются функции для изменения чисел: floor, ceil, round и trunc для округления, а также fabs для получения абсолютного значения.

Все они находятся в math.h и работают со значениями типа double.

Функция floor

floor(x) округляет вниз до ближайшего целого числа, в направлении минус бесконечности.

Поэтому floor(3.9) равно 3.0, а floor(-1.2) — -2.0.

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%.1f\n", floor(3.9));
    printf("%.1f\n", floor(-1.2));
    return 0;
}

Функция ceil

ceil(x) округляет вверх до ближайшего целого числа, в направлении плюс бесконечности.

Поэтому ceil(3.1) равно 4.0, а ceil(-1.8) — -1.0.

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%.1f\n", ceil(3.1));
    printf("%.1f\n", ceil(-1.8));
    return 0;
}

Функция round

round(x) округляет до ближайшего целого числа. При равном удалении от двух целых округление выполняется от нуля.

Поэтому round(2.5) равно 3.0, а round(2.4) — 2.0.

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%.1f\n", round(2.5));
    printf("%.1f\n", round(2.4));
    return 0;
}

Функция trunc

trunc(x) просто отбрасывает дробную часть, всегда приближая число к нулю.

Поэтому trunc(3.9) равно 3.0, а trunc(-3.9) — -3.0.

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%.1f\n", trunc(3.9));
    printf("%.1f\n", trunc(-3.9));
    return 0;
}

Сравнение четырёх функций

Для значения 2.7 результаты различаются:

  • floor(2.7) = 2.0 (вниз)
  • ceil(2.7) = 3.0 (вверх)
  • round(2.7) = 3.0 (до ближайшего)
  • trunc(2.7) = 2.0 (к нулю)

Выберите функцию, соответствующую Вашей задаче.

Абсолютное значение с помощью fabs

fabs(x) возвращает абсолютное значение числа с плавающей точкой: расстояние от нуля, всегда неотрицательное.

Поэтому fabs(-7.5) равно 7.5.

#include <stdio.h>
#include <math.h>

int main(void) {
    printf("%.1f\n", fabs(-7.5));
    printf("%.1f\n", fabs(7.5));
    return 0;
}

fabs и abs

Будьте внимательны: abs (из stdlib.h) работает с целыми числами, а fabs (из math.h) — со значениями типа double.

При использовании abs для значения типа double дробная часть сначала будет отброшена. Для чисел с плавающей точкой всегда используйте fabs.

Преобразование в int

Эти функции возвращают значение типа double. Чтобы сохранить целое число в переменной типа int, преобразуйте результат.

Безопаснее сначала использовать round, а затем выполнить преобразование, чтобы такие значения, как 2.999, случайно не превратились в 2.

#include <stdio.h>
#include <math.h>

int main(void) {
    double x = 4.6;
    int whole = (int)round(x);
    printf("whole = %d\n", whole);
    return 0;
}

Пример с расстоянием

fabs удобно использовать, чтобы измерить расстояние между двумя значениями, независимо от того, какое из них больше.

Здесь мы находим разницу между двумя температурами.

#include <stdio.h>
#include <math.h>

int main(void) {
    double a = 5.0, b = 12.5;
    printf("gap = %.1f\n", fabs(a - b));
    return 0;
}

Округление до десятичных знаков

Чтобы округлить число до двух знаков после запятой, умножьте его на 100, округлите, а затем разделите на 100.

Этот приём использует round, чтобы значения в денежном формате оставались аккуратными.

#include <stdio.h>
#include <math.h>

int main(void) {
    double price = 3.14159;
    double r = round(price * 100.0) / 100.0;
    printf("%.2f\n", r);
    return 0;
}

Быстрая проверка

Вспомните, как работает каждая функция округления.

Повторение

Вы изучили floor (вниз), ceil (вверх), round (до ближайшего) и trunc (к нулю), а также fabs для получения абсолютного значения чисел типа double.

Помните: для чисел с плавающей точкой используйте fabs, а не abs, и преобразуйте результат в int, когда нужно получить целое число. Отличная работа — Вы завершили курс по math.h!

Можно начать бесплатно

Изучай C с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
39
Уроки
144

Часто задаваемые вопросы

Урок «Округление и абсолютные значения» бесплатный?

Да — полный текст урока «Округление и абсолютные значения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 4 уроков всего.

Чему я научусь в уроке «Округление и абсолютные значения»?

Используйте floor, ceil, round и fabs. Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C Academy?

Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Округление и абсолютные значения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C Academy?

Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Подключение math.h
  2. Степени и корни
  3. Тригонометрия и логарифмы
  4. Округление и абсолютные значения
← Назад к C Academy