Функция fabs в C++: модуль числа
Привет! С помощью функции fabs
можно получить модуль вещественного числа. В данной статье мы разберемся как данная функция работает на примерах, а также сделаем свою версию данной функции.
Как работает fabs
fabs
является частью cmath
. Данная функция принимает вещественное число и возвращает его модуль. Модуль числа равен самому числу, если оно больше нуля, и равен числу, умноженному на -1, если оно меньше нуля. Результат функции fabs
можно видеть на графике ниже:
Данный график можно представить формулой: fabs(x) = |x|
Теперь давайте попробуем воспользоваться данной функцией:
#include <iostream>
#include <cmath>
int main() {
std::cout << "fabs(10.5) = " << std::fabs(10.5) << std::endl;
std::cout << "fabs(-10.5) = " << std::fabs(-10.5) << std::endl;
std::cout << "fabs(0) = " << std::fabs(0) << std::endl;
return 0;
}
fabs
также доступна при использовании заголовочного файлаmath.h
. Однако для новых программ рекомендуется использоватьcmath
, посколькуmath.h
считается устаревшим.
Результат работы программы:
fabs(10.5) = 10.5
fabs(-10.5) = 10.5
fabs(0) = 0
Как реализовать fabs самому
Чтобы лучше понять fabs
, давайте реализуем данную функцию сами:
#include <iostream>
float fabs(float x) {
if (x < 0) {
return -x;
}
return x;
}
int main() {
std::cout << "fabs(10.5) = " << fabs(10.5) << std::endl;
std::cout << "fabs(-10.5) = " << fabs(-10.5) << std::endl;
std::cout << "fabs(0) = " << fabs(0) << std::endl;
return 0;
}
Стоит отметить, что версия
fabs
, которая находится в стандартной библиотеке C++, будет работать быстрее, поскольку оптимизирована на уровне байт-кода.
Результат работы программы:
fabs(10.5) = 10.5
fabs(-10.5) = 10.5
fabs(0) = 0
Как видите, наша функция fabs
работает аналогично стандартной функции в C++.
Отличие std::fabs от abs
У функции std::fabs
есть аналог для целых чисел - abs
. Разница у них лишь в том, что std::fabs
работает с дробными числами, в то время как abs
работает только с целыми. Таким образом, если вам требуется модуль вещественного числа, используйте std::fabs
. Для целых чисел применяйте abs
.
abs
остался со времен C и доступен без подключенияcmath
илиmath.h
.
Есть еще labs
, который работает с long
числами (abs
принимает и возвращает int
). Постарайтесь не запутаться в следующий раз, когда будите выбирать нужную версию данной функции 🙂.
Что будет выведено на экран:
cout << labs(-7.25) << endl;
Упражнения
- Применение
fabs
:
Напишите программу на C++, которая запрашивает у пользователя вещественное число, применяет к нему функциюfabs
и выводит результат. Ваша программа должна также выводить исходное число пользователя. - Создание своей версии
fabs
дляdouble
:
Используя предоставленный в статье пример, создайте свою версию функцииfabs
, но для чисел типаdouble
. Проверьте ее работу, используя различные числа. - Сравнение
fabs
иabs
:
Напишите программу, которая демонстрирует различия междуfabs
иabs
. В вашей программе должны быть использованы обе функции, и результаты их работы должны выводиться на экран.
Если хотите всегда быть в курсе последних новостей в мире программирования и IT, подписываетесь на мой Telegram-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение