std::trunc, std::truncf, std::truncl
From cppreference.com
| ヘッダー <cmath> で定義 |
||
| (1) | ||
float trunc ( float num ); double trunc ( double num ); long double trunc ( long double num ); |
(C++23まで) | |
| constexpr /*浮動小数点数型*/ trunc ( /*浮動小数点数型*/ num ); |
(C++23から) | |
float truncf( float num ); |
(2) | (C++11以降) (C++23 以降 constexpr) |
long double truncl( long double num ); |
(3) | (C++11以降) (C++23 以降 constexpr) |
| SIMDオーバーロード (C++26以降) |
||
| ヘッダー <simd> で定義 |
||
| template< /*math-floating-point*/ V > constexpr /*deduced-simd-t*/<V> |
(S) | (C++26以降) |
| 追加のオーバーロード (C++11以降) |
||
| ヘッダー <cmath> で定義 |
||
template< class Integer > double trunc ( Integer num ); |
(A) | (C++23 以降 constexpr) |
1-3) num の絶対値がそれ以下で、最も近い整数を計算します。ライブラリは、パラメータの型としてすべての cv 修飾されていない浮動小数点数型に対する
std::trunc のオーバーロードを提供します。(C++23 以降)|
S) SIMD オーバーロードは、v_num に対して要素ごとの
std::trunc を実行します。
|
(C++26以降) |
|
A) すべての整数型に対する追加のオーバーロードが提供されます。これらは double として扱われます。
|
(C++11以降) |
目次 |
[編集] パラメータ
| num | - | 浮動小数点数または整数値 |
[編集] 戻り値
エラーが発生しない場合、num の絶対値がそれ以下で最も近い整数値(つまり、num をゼロ方向に丸めた値)が返されます。
戻り値
num
[編集] エラー処理
エラーは math_errhandling で指定された通りに報告される。
実装がIEEE浮動小数点算術 (IEC 60559) をサポートしている場合、
- 現在の 丸めモード は影響しません。
- num が ±∞ の場合、変更されずに返されます。
- num が ±0 の場合、変更されずに返されます。
- num が NaN の場合、NaN が返されます。
[編集] 注意
非整数の有限値を切り捨てる際に、FE_INEXACT が発生する可能性があります(必須ではありません)。
標準の浮動小数点数形式では、最も大きな表現可能な浮動小数点数値はすべて整数であるため、この関数自体がオーバーフローすることはありません。ただし、結果は整数変数に格納される際に、任意の整数型(std::intmax_t を含む)にオーバーフローする可能性があります。
浮動小数点数から整数型への暗黙の型変換もゼロ方向に丸めますが、ターゲット型で表現できる値に制限されます。
追加のオーバーロードは、(A) とまったく同じように提供される必要はありません。引数 num が整数型である場合、std::trunc(num) が std::trunc(static_cast<double>(num)) と同じ効果を持つことを保証するだけで十分です。
[編集] 例
このコードを実行
#include <cmath> #include <initializer_list> #include <iostream> int main() { const auto data = std::initializer_list<double> { +2.7, -2.9, +0.7, -0.9, +0.0, 0.0, -INFINITY, +INFINITY, -NAN, +NAN }; std::cout << std::showpos; for (double const x : data) std::cout << "trunc(" << x << ") == " << std::trunc(x) << '\n'; }
実行結果の例
trunc(+2.7) == +2 trunc(-2.9) == -2 trunc(+0.7) == +0 trunc(-0.9) == -0 trunc(+0) == +0 trunc(+0) == +0 trunc(-inf) == -inf trunc(+inf) == +inf trunc(-nan) == -nan trunc(+nan) == +nan
[編集] 関連項目
| (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 のドキュメント (trunc)
| |