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
Definido en el encabezado <cmath>
Definido en el encabezado <cstdlib>
(1)
float abs ( float num ) ;

double abs ( double num ) ;

long double abs ( long 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 ) ;

long double fabs ( long 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)
Definido en el encabezado <cmath>
template < class Integer >
double fabs ( Integer num ) ;
(A) (desde C++11)
(constexpr desde C++23)
1-4) Calcula el valor absoluto del valor de punto flotante num . La biblioteca proporciona sobrecargas de 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

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)