Namespaces
Variants

std:: ratio

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
定義済みヘッダー <ratio>
template <

std:: intmax_t Num,
std:: intmax_t Denom = 1

> class ratio ;
(C++11以降)

クラステンプレート std::ratio コンパイル時有理数演算 を提供します。このテンプレートの各インスタンス化は、分子 Num と分母 Denom std::intmax_t 型のコンパイル時定数として表現可能である限り、あらゆる有限有理数を正確に表現します。さらに、 Denom はゼロであってはならず、 Num Denom の両方が最も負の値に等しくあってはなりません。

分子と分母を表す静的データメンバー num den は、 Num Denom をそれらの最大公約数で割ることによって計算されます。ただし、異なる Num または Denom を持つ二つの std::ratio は、同じ有理数を表す場合(約分後であっても)でも異なる型です。 std::ratio 型は、その type メンバーを通じて既約分数に約分できます: std :: ratio < 3 , 6 > :: type std :: ratio < 1 , 2 > です。

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

翻訳のポイント: - `zetta` はC++の定数名なので翻訳せず保持 - `(since C++11)` を `(C++11以降)` に翻訳 - HTMLタグ、属性、 タグ内のコードは完全に保持 - 数値、数式、C++固有の用語は翻訳せず - フォーマットと構造は完全に維持
定義済みヘッダー <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 が分子を表現できる場合にのみ宣言されます。

目次

ネスト型

定義
type std :: ratio < num, den > (約分後の有理数型)

データメンバ

以下の定義において、

  • sign ( Denom ) Denom が負の場合 - 1 を、それ以外の場合 1 を返す。また
  • gcd ( Num, Denom ) std :: abs ( Num ) std :: abs ( Denom ) の最大公約数である。
メンバー 定義
constexpr std:: intmax_t num
[static]
sign ( Denom ) * Num / gcd ( Num, Denom )
(公開静的メンバー定数)
constexpr std:: intmax_t den
[static]
std :: abs ( Denom ) / gcd ( Num, Denom )
(公開静的メンバー定数)

注記

機能テスト マクロ 標準 機能
__cpp_lib_ratio 202306L (C++26) 新しい2022 SI接頭辞の追加: quecto, quetta, ronto, ronna

#include <ratio>
static_assert
(
    std::ratio_equal_v<std::ratio_multiply<std::femto, std::exa>, std::kilo>
);
int main() {}

関連項目

数学定数 (C++20) いくつかの数学定数を提供します。例えば std::numbers::e e を表します