std:: abs (float) , std:: fabs, std:: fabsf, std:: fabsl
|
Определено в заголовке
<cmath>
|
||
|
Определено в заголовке
<cstdlib>
|
||
| (1) | ||
|
float
abs
(
float
num
)
;
double
abs
(
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
)
;
|
(до 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) |
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 |
Смотрите также
|
(C++11)
|
вычисляет абсолютное значение целочисленного значения (
|x|
)
(функция) |
|
(C++11)
(C++11)
(C++11)
|
копирует знак значения с плавающей запятой
(функция) |
|
(C++11)
|
проверяет, является ли заданное число отрицательным
(функция) |
|
возвращает модуль комплексного числа
(шаблон функции) |
|
|
применяет функцию
abs
к каждому элементу valarray
(шаблон функции) |
|
|
Документация C
для
fabs
|
|