Округление и абсолютные значения
Используйте floor, ceil, round и fabs.
«Округление и абсолютные значения» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Подключение math.h
- Степени и корни
- Тригонометрия и логарифмы
- Округление и абсолютные значения