名前空間
変種
操作

std::abs(float), std::fabs, std::fabsf, std::fabsl

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
abs(float)fabs
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数関数
(C++11)
(C++11)

(C++11)
(C++11)
べき乗関数
(C++11)
(C++11)
三角関数と
双曲線関数
(C++11)
(C++11)
(C++11)

誤差関数とガンマ関数
(C++11)
(C++11)
(C++11)
(C++11)
最近接整数への浮動小数点数操作
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮動小数点数の操作関数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分類と比較
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
マクロ定数
分類
(C++11)(C++11)(C++11)(C++11)(C++11)


 
ヘッダー <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 の絶対値を計算します。C++23以降、ライブラリは、パラメータ num の型として、すべての cv-unqualified な浮動小数点型に対する std::abs および std::fabs のオーバーロードを提供します。(since C++23)
A) すべての整数型に対する追加のオーバーロードが提供されます。これらは double として扱われます。
(C++11以降)

整数引数については、std::abs の整数オーバーロードの方が適切な場合が多いです。std::abs が、整数昇格によって int に変換できない符号なし整数引数で呼び出された場合、プログラムは不定形となります。

目次

[edit] Parameters

num - 浮動小数点数または整数値

[edit] Return value

成功した場合、arg の絶対値 (|arg|) を返します。返される値は正確であり、丸めモードには依存しません。

[edit] Error handling

この関数は、math_errhandling で指定されたエラー条件のいずれにも影響されません。

実装がIEEE浮動小数点算術 (IEC 60559) をサポートしている場合、

  • 引数が ±0 の場合、+0 が返されます。
  • 引数が ±∞ の場合、+∞ が返されます。
  • 引数が NaN の場合、NaN が返されます。

[edit] Notes

追加のオーバーロードは、(A) とまったく同じように提供される必要はありません。整数型の引数 num に対して、std::fabs(num)std::fabs(static_cast<double>(num)) と同じ効果を持つことを保証するのに十分であればよいのです。

[edit] Example

#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

[edit] Defect reports

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 2192 C++98 std::abs のオーバーロードが
2つのヘッダーで一貫性のない宣言がされていた
これらのオーバーロードを宣言した
両方のヘッダーで
LWG 2735 C++11 整数型に対する std::abs のオーバーロード
double を返すことが誤って要求されていた
要件が削除されました

[edit] See also

整数値の絶対値を計算する (|x|)
(関数) [編集]
(C++11)(C++11)(C++11)
浮動小数点数値の符号をコピーする
(関数) [編集]
(C++11)
与えられた数値が負数かチェックする
(関数) [編集]
複素数の大きさを返す
(関数テンプレート) [編集]
valarrayの各要素に関数absを適用する
(function template) [編集]
English 日本語 中文(简体) 中文(繁體)