Namespaces
Variants

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

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Определено в заголовке <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)
Определено в заголовке <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 .
(since 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 Applied to Behavior as published Correct behavior
LWG 2192 C++98 overloads of std::abs were
inconsistently declared in two headers
declared these overloads
in both headers
LWG 2735 C++11 overloads of std::abs for integer types
returning double was erroneously required
removed the requirement

Смотрите также

вычисляет абсолютное значение целочисленного значения ( |x| )
(функция)
(C++11) (C++11) (C++11)
копирует знак значения с плавающей запятой
(функция)
(C++11)
проверяет, является ли заданное число отрицательным
(функция)
возвращает модуль комплексного числа
(шаблон функции)
применяет функцию abs к каждому элементу valarray
(шаблон функции)