名稱空間
變體
操作

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

來自 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 /* 浮點型別 */
            abs( /* 浮點型別 */ num );
(C++23 起)
定義於標頭檔案 <cmath>
(2)
float       fabs ( float num );

double      fabs ( double num )

long double fabs ( long double num );
(直至 C++23)
constexpr /* 浮點型別 */
            fabs ( /* 浮點型別 */ 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)
1-4) 計算浮點值 num 的絕對值。 庫為所有 cv-非限定浮點型別提供了 std::absstd::fabs 的過載,作為引數 num 的型別。(C++23 起)
A) 為所有整數型別提供了額外的過載,它們被視為 double
(C++11 起)

對於整型引數,std::abs 的整型過載 可能是更好的匹配。如果呼叫 std::abs 時使用無法透過 整型提升 轉換為 int 的無符號整型引數,則程式格式錯誤。

目錄

[編輯] 引數

num - 浮點值或整數值

[編輯] 返回值

如果成功,返回 arg 的絕對值 (|arg|)。返回的值是精確的,不依賴於任何舍入模式。

[編輯] 錯誤處理

此函式不受 math_errhandling 中指定的任何錯誤條件的影響。

如果實現支援 IEEE 浮點運算 (IEC 60559),

  • 如果引數是 ±0,則返回 +0。
  • 如果引數是 ±∞,則返回 +∞。
  • 如果引數是 NaN,則返回 NaN。

[編輯] 注意

不需要完全按照 (A) 提供額外的過載。它們只需要足以確保對於整型引數 numstd::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++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2192 C++98 std::abs 的過載
在兩個標頭檔案中宣告不一致
在兩個標頭檔案中都聲明瞭
這些過載
LWG 2735 C++11 對於整型,std::abs 的過載
錯誤地要求返回 double
移除了此要求

[編輯] 參閱

計算整數值的絕對值 (|x|)
(函式) [編輯]
(C++11)(C++11)(C++11)
複製浮點值的符號
(函式) [編輯]
(C++11)
檢查給定數字是否為負數
(函式) [編輯]
返回複數的模
(函式模板) [編輯]
將函式 abs 應用於 valarray 的每個元素
(函式模板) [編輯]
C 文件 關於 fabs