std::abs(float), std::fabs, std::fabsf, std::fabsl
| Definido en el archivo de encabezado <cmath>
|
||
| Definido en el archivo de encabezado <cstdlib>
|
||
float abs( float arg );
|
(1) | (constexpr since C++23) |
double abs( double arg );
|
(2) | (constexpr since C++23) |
long double abs( long double arg );
|
(3) | (constexpr since C++23) |
| Definido en el archivo de encabezado <cmath>
|
||
float fabs ( float arg );
|
(4) | (constexpr since C++23) |
float fabsf( float arg );
|
(5) | (desde C++11) (constexpr since C++23) |
double fabs ( double arg );
|
(6) | (constexpr since C++23) |
long double fabs ( long double arg );
|
(7) | (constexpr since C++23) |
long double fabsl( long double arg );
|
(8) | (desde C++11) (constexpr since C++23) |
double fabs ( TipoEntero arg );
|
(9) | (desde C++11) (constexpr since C++23) |
arg.double).Para argumentos de tipo entero, las sobrecargas con enteros de std::abs son probablemente mejores coincidencias. Si std::abs se llama con un argumento de tipo entero sin signo que no puede convertirse a int por la promoción de enteros, el programa está mal formado.
Parámetros
| arg | - | Valor de un tipo de punto flotante o tipo entero. |
Valor de retorno
Si tuvo éxito, devuelve el valor absoluto de arg (|arg|). El valor devuelto es exacto y no depende de ningún modo de redondeo.
Manejo de errores
Esta función no está sujeta a ninguna de las condiciones de error especificadas en math_errhandling.
Si la implementación admite la aritmética de punto flotante de la IEEE (IEC 60559):
- Si el argumento +0 o -0, se devuelve +0 o -0, respectivamente.
- Si el argumento +∞ o -∞, se devuelve +∞.
- Si el argumento es NaN, se devuelve NaN.
Ejemplo
#include <iostream>
#include <cmath>
int main()
{
std::cout << "abs(+3.0) = " << std::abs(+3.0) << '\n'
<< "abs(-3.0) = " << std::abs(-3.0) << '\n';
// valores especiales
std::cout << "abs(-0.0) = " << std::abs(-0.0) << '\n'
<< "abs(-Inf) = " << std::abs(-INFINITY) << '\n'
<< "abs(-NaN) = " << std::abs(-NAN) << '\n';
}
Posible salida:
abs(+3.0) = 3
abs(-3.0) = 3
abs(-0.0) = 0
abs(-Inf) = inf
abs(-NaN) = nan
Informes defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2192 | C++98 | Las sobrecargas de std::abs estaban declaradasde manera inconsistente en dos encabezados. |
Se declaran estas sobrecargas en ambos encabezados. |
| LWG 2735 | C++11 | Se requería erróneamente que std::abs tuviera sobrecargaspara tipos enteros que devuelven double
|
Se eliminó el requisito. |
