Spec-Zone.ru › C++

std::abs(float), std::fabs, std::fabsf, std::fabsl

Определено в заголовочном файле <cmath>
Определено в заголовочном файле <cstdlib>
(1)
float       abs( float num );
double      abs( double num );
long double abs( long double num );
(до C++23)
constexpr /* floating-point-type */
            abs( /* floating-point-type */ num );
(с C++23)
Определено в заголовочном файле <cmath>
(2)
float       fabs ( float num );
double      fabs ( double num );
long double fabs ( long double num );
(до C++23)
constexpr /* floating-point-type */
            fabs ( /* floating-point-type */ num );
(с C++23)
float       fabsf( float num );
(3) (с C++11)
(constexpr с C++23)
long double fabsl( long double num );
(4) (с C++11)
(constexpr с C++23)
Дополнительные перегрузки (с C++11)
Определено в заголовочном файле <cmath>
template< class Integer >
double      fabs ( Integer num );
(A) (с C++11)
(constexpr с C++23)
1-4) Вычисляет абсолютное значение вещественного значения num. Библиотека предоставляет перегрузки std::abs и std::fabs для всех типов с плавающей запятой без квалификаторов cv в качестве типа параметра num.(с C++23)
A) Дополнительные перегрузки предоставляются для всех целочисленных типов, которые рассматриваются как double. (с C++11)

Для целочисленных аргументов целочисленные перегрузки std::abs вероятнее всего, являются лучшим соответствием. Если std::abs вызывается с беззнаковым целочисленным аргументом, который не может быть преобразован в int с помощью целочисленного повышения, программа имеет ошибочную форму.

Параметры

num - вещественное или целочисленное значение

Возвращаемое значение

При успешном выполнении возвращает абсолютное значение arg (|arg|). Возвращаемое значение точное и не зависит от режимов округления.

Обработка ошибок

Эта функция не подвержена ни одной из ошибок, указанных в math_errhandling.

Если реализация поддерживает IEEE арифметику с плавающей запятой (IEC 60559),

  • Если аргумент равен ±0, возвращается +0.
  • Если аргумент равен ±∞, возвращается +∞.
  • Если аргумент равен NaN, возвращается NaN.

Примечания

Дополнительные перегрузки не обязаны предоставляться точно как (A). Они должны быть достаточными для того, чтобы для своего аргумента num целочисленного типа std::fabs(num) имел тот же эффект, что и std::fabs(static_cast<double>(num)).

Пример

#include <cmath>
#include <iostream>
 
int main()
{
    std::cout << "abs(+3.0) = " << std::abs(+3.0) << '\n'
              << "abs(-3.0) = " << std::abs(-3.0) << '\n';
 
    // special values
    std::cout << "abs(-0.0) = " << std::abs(-0.0) << '\n'
              << "abs(-Inf) = " << std::abs(-INFINITY) << '\n'
              << "abs(-NaN) = " << std::abs(-NAN) << '\n';
}

Возможный вывод:

abs(+3.0) = 3
abs(-3.0) = 3
abs(-0.0) = 0
abs(-Inf) = inf
abs(-NaN) = nan

Отчеты об ошибках

Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Корректное поведение
LWG 2192 C++98 перегрузки std::abs были
несогласованно объявлены в двух заголовочных файлах
объявлены эти перегрузки
в обоих заголовочных файлах
LWG 2735 C++11 перегрузки std::abs для целочисленных типов
возвращающие double были ошибочно необходимы
убрано требование

См. также

abs(int)labsllabs
(C++11)
вычисляет абсолютное значение целочисленного значения (\(\small{|x|}\)|x|)
(функция)
copysigncopysignfcopysignl
(C++11)(C++11)(C++11)
копирует знак вещественного значения
(функция)
signbit
(C++11)
проверяет, является ли данное число отрицательным
(функция)
abs(std::complex)
возвращает величину комплексного числа
(шаблон функции)
abs(std::valarray)
применяет функцию abs к каждому элементу valarray
(шаблон функции)
C документация для fabs

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/fabs

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API