Namespaces
Variants

Compile-time rational arithmetic (since C++11)

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
Compile time rational arithmetic

クラステンプレート std::ratio および関連テンプレートは、コンパイル時有理数演算のサポートを提供します。このテンプレートの各インスタンス化は、あらゆる有限有理数を正確に表現します。

コンパイル時分数

定義済みヘッダ <ratio>
(C++11)
正確な有理分数を表現する
(クラステンプレート)

以下の便利な型エイリアスは、SI比率に対応するものであり、標準ライブラリによって提供されます:

定義済みヘッダー <ratio>
定義
quecto (C++26以降) std:: ratio < 1 , 1000000000000000000000000000000 > (10 -30 ) [1]
ronto (C++26以降) std:: ratio < 1 , 1000000000000000000000000000 > (10 -27 ) [1]
yocto (C++11以降) std:: ratio < 1 , 1000000000000000000000000 > (10 -24 ) [1]
zepto (C++11以降) std:: ratio < 1 , 1000000000000000000000 > (10 -21 ) [1]
atto (C++11以降) std:: ratio < 1 , 1000000000000000000 > (10 -18 )
femto (C++11以降) std:: ratio < 1 , 1000000000000000 > (10 -15 )
pico (C++11以降) std:: ratio < 1 , 1000000000000 > (10 -12 )
nano (C++11以降) std:: ratio < 1 , 1000000000 > (10 -9 )
micro (C++11以降) std:: ratio < 1 , 1000000 > (10 -6 )
milli (C++11以降) std:: ratio < 1 , 1000 > (10 -3 )
centi (C++11以降) std:: ratio < 1 , 100 > (10 -2 )
deci (C++11以降) std:: ratio < 1 , 10 > (10 -1 )
deca (C++11以降) std:: ratio < 10 , 1 > (10 1 )
hecto (C++11以降) std:: ratio < 100 , 1 > (10 2 )
kilo (C++11以降) std:: ratio < 1000 , 1 > (10 3 )
mega (C++11以降) std:: ratio < 1000000 , 1 > (10 6 )
giga (C++11以降) std:: ratio < 1000000000 , 1 > (10 9 )
tera (C++11以降) std:: ratio < 1000000000000 , 1 > (10 12 )
peta (C++11以降) std:: ratio < 1000000000000000 , 1 > (10 15 )
exa (C++11以降) std:: ratio < 1000000000000000000 , 1 > (10 18 )
zetta (C++11以降) std:: ratio < 1000000000000000000000 , 1 > (10 21 ) [2]
yotta (C++11以降) std:: ratio < 1000000000000000000000000 , 1 > (10 24 ) [2]
ronna (C++26以降) std:: ratio < 1000000000000000000000000000 , 1 > (10 27 ) [2]
quetta (C++26以降) std:: ratio < 1000000000000000000000000000000 , 1 > (10 30 ) [2]
  1. 1.0 1.1 1.2 1.3 これらのtypedefは、 std::intmax_t が分母を表現できる場合にのみ宣言されます。
  2. 2.0 2.1 2.2 2.3 これらのtypedefは、 std::intmax_t が分子を表現できる場合にのみ宣言されます。

コンパイル時有理数演算

コンパイル時に ratio オブジェクトに対して算術演算を実行するいくつかのエイリアステンプレートが提供されています。

定義済みヘッダ <ratio>
(C++11)
2つの ratio オブジェクトをコンパイル時に加算する
(エイリアステンプレート)
2つの ratio オブジェクトをコンパイル時に減算する
(エイリアステンプレート)
2つの ratio オブジェクトをコンパイル時に乗算する
(エイリアステンプレート)
2つの ratio オブジェクトをコンパイル時に除算する
(エイリアステンプレート)

コンパイル時有理数比較

コンパイル時に ratio オブジェクトに対して比較演算を実行するいくつかのクラステンプレートが提供されています。

ヘッダーで定義 <ratio>
2つの ratio オブジェクトが等しいかどうかをコンパイル時に比較する
(クラステンプレート)
2つの ratio オブジェクトが等しくないかどうかをコンパイル時に比較する
(クラステンプレート)
(C++11)
2つの ratio オブジェクトが より小さい かどうかをコンパイル時に比較する
(クラステンプレート)
2つの ratio オブジェクトが 以下 かどうかをコンパイル時に比較する
(クラステンプレート)
2つの ratio オブジェクトが より大きい かどうかをコンパイル時に比較する
(クラステンプレート)
2つの ratio オブジェクトが 以上 かどうかをコンパイル時に比較する
(クラステンプレート)