std:: abs (float) , std:: fabs, std:: fabsf, std:: fabsl
|
ヘッダーで定義
<cmath>
|
||
|
ヘッダーで定義
<cstdlib>
|
||
| (1) | ||
|
float
abs
(
float
num
)
;
double
abs
(
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
)
;
|
(C++23まで) | |
|
constexpr
/* floating-point-type */
fabs ( /* floating-point-type */ num ) ; |
(C++23から) | |
|
float
fabsf
(
float
num
)
;
|
(3) |
(C++11から)
(C++23からconstexpr) |
|
long
double
fabsl
(
long
double
num
)
;
|
(4) |
(C++11から)
(C++23からconstexpr) |
|
追加のオーバーロード
(C++11から)
|
||
|
ヘッダーで定義
<cmath>
|
||
|
template
<
class
Integer
>
double fabs ( Integer num ) ; |
(A) |
(C++11から)
(C++23からconstexpr) |
std::abs
および
std::fabs
のオーバーロードを、パラメータ
num
の型としてすべてのcv修飾されていない浮動小数点型に対して提供します。
(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
のオーバーロードが
2つのヘッダーで矛盾して宣言されていた |
これらのオーバーロードを
両方のヘッダーで宣言する |
| LWG 2735 | C++11 |
整数型に対する
std::abs
のオーバーロードで
double を返すことが誤って要求されていた |
この要求を削除 |
関連項目
|
(C++11)
|
整数値の絶対値を計算する (
|x|
)
(関数) |
|
(C++11)
(C++11)
(C++11)
|
浮動小数点値の符号をコピーする
(関数) |
|
(C++11)
|
指定された数値が負かどうかをチェックする
(関数) |
|
複素数の大きさを返す
(関数テンプレート) |
|
|
関数
abs
をvalarrayの各要素に適用する
(関数テンプレート) |
|
|
Cドキュメント
for
fabs
|
|