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
ヘッダーで定義 <cmath>
ヘッダーで定義 <cstdlib>
(1)
float abs ( float num ) ;

double abs ( double num ) ;

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

long double fabs ( long 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)
ヘッダーで定義 <cmath>
template < class Integer >
double fabs ( Integer num ) ;
(A) (C++11から)
(C++23からconstexpr)
1-4) 浮動小数点値 num の絶対値を計算します。 ライブラリは、 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 を返すことが誤って要求されていた
この要求を削除

関連項目

整数値の絶対値を計算する ( |x| )
(関数)
(C++11) (C++11) (C++11)
浮動小数点値の符号をコピーする
(関数)
(C++11)
指定された数値が負かどうかをチェックする
(関数)
複素数の大きさを返す
(関数テンプレート)
関数 abs をvalarrayの各要素に適用する
(関数テンプレート)