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) |
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 были ошибочно необходимы |
убрано требование |
См. также
|
(C++11) |
вычисляет абсолютное значение целочисленного значения (\(\small{|x|}\)|x|) (функция) |
|
(C++11)(C++11)(C++11) |
копирует знак вещественного значения (функция) |
|
(C++11) |
проверяет, является ли данное число отрицательным (функция) |
| возвращает величину комплексного числа (шаблон функции) |
|
применяет функцию 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