名前空間
変種
操作

std::trunc, std::truncf, std::truncl

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
ヘッダー <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> で定義
template< /*math-floating-point*/ V >

constexpr /*deduced-simd-t*/<V>

           trunc ( const V& v_num );
(S) (C++26以降)
ヘッダー <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 を実行します。
(定義については、math-floating-point および deduced-simd-t を参照してください。)
(C++26以降)
A) すべての整数型に対する追加のオーバーロードが提供されます。これらは double として扱われます。
(C++11以降)

目次

[編集] パラメータ

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

[編集] 戻り値

エラーが発生しない場合、num の絶対値がそれ以下で最も近い整数値(つまり、num をゼロ方向に丸めた値)が返されます。

戻り値
math-trunc.svg
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)
最近接整数、中間値はゼロから遠い方に丸める
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)