std::abs(float), std::fabs, std::fabsf, std::fabsl
來自 cppreference.com
定義於標頭檔案 <cmath> |
||
定義於標頭檔案 <cstdlib> |
||
(1) | ||
float abs( float num ); double abs( double num ); |
(直至 C++23) | |
constexpr /* 浮點型別 */ abs( /* 浮點型別 */ num ); |
(C++23 起) | |
定義於標頭檔案 <cmath> |
||
(2) | ||
float fabs ( float num ); double fabs ( 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::abs
和 std::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) 提供額外的過載。它們只需要足以確保對於整型引數 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++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 2192 | C++98 | std::abs 的過載在兩個標頭檔案中宣告不一致 |
在兩個標頭檔案中都聲明瞭 這些過載 |
LWG 2735 | C++11 | 對於整型,std::abs 的過載錯誤地要求返回 double |
移除了此要求 |
[編輯] 參閱
(C++11) |
計算整數值的絕對值 (|x|) (函式) |
(C++11)(C++11)(C++11) |
複製浮點值的符號 (函式) |
(C++11) |
檢查給定數字是否為負數 (函式) |
返回複數的模 (函式模板) | |
將函式 abs 應用於 valarray 的每個元素 (函式模板) | |
C 文件 關於 fabs
|