std:: abs (float) , std:: fabs, std:: fabsf, std:: fabsl
|
Definido en el encabezado
<cmath>
|
||
|
Definido en el encabezado
<cstdlib>
|
||
| (1) | ||
|
float
abs
(
float
num
)
;
double
abs
(
double
num
)
;
|
(hasta C++23) | |
|
constexpr
/* floating-point-type */
abs ( /* floating-point-type */ num ) ; |
(desde C++23) | |
|
Definido en el encabezado
<cmath>
|
||
| (2) | ||
|
float
fabs
(
float
num
)
;
double
fabs
(
double
num
)
;
|
(hasta C++23) | |
|
constexpr
/* floating-point-type */
fabs ( /* floating-point-type */ num ) ; |
(desde C++23) | |
|
float
fabsf
(
float
num
)
;
|
(3) |
(desde C++11)
(constexpr desde C++23) |
|
long
double
fabsl
(
long
double
num
)
;
|
(4) |
(desde C++11)
(constexpr desde C++23) |
|
Sobrecargas adicionales
(desde C++11)
|
||
|
Definido en el encabezado
<cmath>
|
||
|
template
<
class
Integer
>
double fabs ( Integer num ) ; |
(A) |
(desde C++11)
(constexpr desde C++23) |
std::abs
y
std::fabs
para todos los tipos de punto flotante sin calificación cv como el tipo del parámetro
num
.
(desde C++23)
|
A)
Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como
double
.
|
(since C++11) |
Para argumentos integrales,
las sobrecargas integrales de
std::abs
son probablemente mejores coincidencias. Si
std::abs
es llamado con un argumento integral sin signo que no puede ser convertido a
int
mediante
promoción integral
, el programa está mal formado.
Contenidos |
Parámetros
| num | - | valor de punto flotante o entero |
Valor de retorno
Si tiene é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 soporta aritmética de punto flotante IEEE (IEC 60559),
- Si el argumento es ±0, se devuelve +0.
- Si el argumento es ±∞, se devuelve +∞.
- Si el argumento es NaN, se devuelve NaN.
Notas
Las sobrecargas adicionales no están obligadas a proporcionarse exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: fabs ( num ) tenga el mismo efecto que std :: fabs ( static_cast < double > ( num ) ) .
Ejemplo
#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'; }
Salida posible:
abs(+3.0) = 3 abs(-3.0) = 3 abs(-0.0) = 0 abs(-Inf) = inf abs(-NaN) = nan
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Se aplica a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2192 | C++98 |
las sobrecargas de
std::abs
se declaraban
inconsistentemente en dos cabeceras |
se declaran estas sobrecargas
en ambas cabeceras |
| LWG 2735 | C++11 |
las sobrecargas de
std::abs
para tipos enteros
que devuelven double se requerían erróneamente |
se eliminó el requisito |
Véase también
|
(C++11)
|
calcula el valor absoluto de un valor integral (
|x|
)
(función) |
|
(C++11)
(C++11)
(C++11)
|
copia el signo de un valor de punto flotante
(función) |
|
(C++11)
|
verifica si el número dado es negativo
(función) |
|
devuelve la magnitud de un número complejo
(plantilla de función) |
|
|
aplica la función
abs
a cada elemento del valarray
(plantilla de función) |
|
|
Documentación C
para
fabs
|
|