std::abs(float), std::fabs, std::fabsf, std::fabsl
| Definiert in der Header-Datei <cmath> |
||
| Definiert in Header <cstdlib> |
||
| (1) | ||
float abs( float num ); double abs( double num ); |
(bis C++23) | |
| constexpr /* gleitkommazahl-Typ */ abs( /* Gleitkommazahltyp */ num ); |
(seit C++23) | |
| Definiert in der Header-Datei <cmath> |
||
| (2) | ||
float fabs ( float num ); double fabs ( double num ); |
(bis C++23) | |
| constexpr /* gleitkommazahl-Typ */ fabs ( /* Gleitkommazahltyp */ num ); |
(seit C++23) | |
| float fabsf( float num ); |
(3) | (seit C++11) (constexpr seit C++23) |
| long double fabsl( long double num ); |
(4) | (seit C++11) (constexpr seit C++23) |
| Zusätzliche Überladungen (seit C++11) |
||
| Definiert in der Header-Datei <cmath> |
||
| template< class Integer > double fabs ( Integer num ); |
(A) | (seit C++11) (constexpr seit C++23) |
std::abs und std::fabs für alle cv-unqualifizierten Gleitkommatypen als Parametertyp von num bereit.(seit C++23)|
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
|
(seit C++11) |
Für ganzzahlige Argumente sind die ganzzahligen Überladungen von std::abs wahrscheinlich besser geeignet. Wenn std::abs mit einem vorzeichenlosen ganzzahligen Argument aufgerufen wird, das durch Ganzzahlpromotion nicht in int konvertiert werden kann, ist das Programm fehlerhaft.
Inhalt |
[edit] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
[edit] Rückgabewert
Bei Erfolg wird der Absolutwert von arg (|arg|) zurückgegeben. Der zurückgegebene Wert ist exakt und hängt nicht von Rundungsmodi ab.
[edit] Fehlerbehandlung
Diese Funktion unterliegt keinen der in math_errhandling spezifizierten Fehlerbedingungen.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- Wenn das Argument ±0 ist, wird +0 zurückgegeben.
- Wenn das Argument ±∞ ist, wird +∞ zurückgegeben.
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
[edit] Anmerkungen
Die zusätzlichen Überladungen müssen nicht genau wie (A) bereitgestellt werden. Sie müssen nur ausreichend sein, um sicherzustellen, dass für ihr Argument num vom ganzzahligen Typ std::fabs(num) die gleiche Wirkung hat wie std::fabs(static_cast<double>(num)).
[edit] Beispiel
#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'; }
Mögliche Ausgabe
abs(+3.0) = 3 abs(-3.0) = 3 abs(-0.0) = 0 abs(-Inf) = inf abs(-NaN) = nan
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2192 | C++98 | Überladungen von std::abs wurdeninkonsistent in zwei Headern deklariert |
deklarierten diese Überladungen in beiden Headern |
| LWG 2735 | C++11 | Überladungen von std::abs für ganzzahlige Typendie double zurückgaben, wurden fälschlicherweise gefordert |
Anforderung entfernt |
[edit] Siehe auch
| (C++11) |
berechnet den Absolutwert eines ganzzahligen Wertes (|x|) (Funktion) |
| (C++11)(C++11)(C++11) |
kopiert das Vorzeichen eines Gleitkommawerts (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl negativ ist (Funktion) |
| gibt den Betrag einer komplexen Zahl zurück (function template) | |
| wendet die Funktion abs auf jedes Element des Valarrays an (function template) | |
| C-Dokumentation für fabs
| |