std::ceil, std::ceilf, std::ceill
From cppreference.com
| ヘッダー <cmath> で定義 |
||
| (1) | ||
float ceil ( float num ); double ceil ( double num ); |
(C++23まで) | |
| constexpr /*浮動小数点数型*/ ceil ( /*浮動小数点型*/ num ); |
(C++23から) | |
float ceilf( float num ); |
(2) | (C++11以降) (C++23 以降 constexpr) |
long double ceill( 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 ceil ( Integer num ); |
(A) | (C++23 以降 constexpr) |
1-3) num 以上の最小の整数値を計算します。ライブラリは、パラメータの型として、すべてのcv修飾されていない浮動小数点型に対する
std::ceil のオーバーロードを提供します。(C++23以降)|
S) SIMD オーバーロードは、v_num に対して要素ごとの
std::ceil を実行します。
|
(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 を含む) をオーバーフローする可能性があります。このため、戻り値の型は整数ではなく浮動小数点数です。
この関数 (double 引数に対するもの) は、FE_INEXACT を発生させない自由度を除き、以下のコードで実装されているかのように動作します。
#include <cfenv> #include <cmath> #pragma STDC FENV_ACCESS ON double ceil(double x) { int save_round = std::fegetround(); std::fesetround(FE_UPWARD); double result = std::rint(x); // or std::nearbyint std::fesetround(save_round); return result; }
追加のオーバーロードは、(A) のように正確に提供される必要はありません。整数型の引数 num に対して、std::ceil(num) が std::ceil(static_cast<double>(num)) と同じ効果を持つことを保証するだけで十分です。
[編集] 例
このコードを実行
#include <cmath> #include <iostream> int main() { std::cout << std::fixed << "ceil(+2.4) = " << std::ceil(+2.4) << '\n' << "ceil(-2.4) = " << std::ceil(-2.4) << '\n' << "ceil(-0.0) = " << std::ceil(-0.0) << '\n' << "ceil(-Inf) = " << std::ceil(-INFINITY) << '\n'; }
出力
ceil(+2.4) = 3.000000 ceil(-2.4) = -2.000000 ceil(-0.0) = -0.000000 ceil(-Inf) = -inf
[編集] 関連
| (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 のドキュメント (ceil)
| |
[編集] 外部リンク
| 整数の除算の高速な天井 — StackOverflow |