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
Definiert im Header <ratio>
template <

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

> class ratio ;
(seit C++11)

Die Klassenvorlage std::ratio bietet Compile-Zeit-Rationalarithmetik Unterstützung. Jede Instanziierung dieser Vorlage repräsentiert exakt jede endliche rationale Zahl, solange ihr Zähler Num und Nenner Denom als Compile-Zeit-Konstanten des Typs std::intmax_t darstellbar sind. Zusätzlich darf Denom nicht null sein und sowohl Num als auch Denom dürfen nicht dem negativsten Wert entsprechen.

Die statischen Datenelemente num und den , die den Zähler und Nenner repräsentieren, werden durch Division von Num und Denom durch ihren größten gemeinsamen Teiler berechnet. Allerdings sind zwei std::ratio mit unterschiedlichen Num oder Denom verschiedene Typen, selbst wenn sie dieselbe rationale Zahl (nach Kürzung) darstellen. Ein std::ratio -Typ kann auf seine kleinsten Terme reduziert werden über sein type -Member: std :: ratio < 3 , 6 > :: type ist std :: ratio < 1 , 2 > .

Die folgenden praktischen Typdefinitionen, die den SI-Verhältnissen entsprechen, werden von der Standardbibliothek bereitgestellt:

Definiert in Header <ratio>
Typ Definition
quecto (seit C++26) std :: ratio < 1 , 1000000000000000000000000000000 > (10 -30 ) [1]
ronto (seit C++26) std :: ratio < 1 , 1000000000000000000000000000 > (10 -27 ) [1]
yocto (seit C++11) std :: ratio < 1 , 1000000000000000000000000 > (10 -24 ) [1]
zepto (seit C++11) std :: ratio < 1 , 1000000000000000000000 > (10 -21 ) [1]
atto (seit C++11) std :: ratio < 1 , 1000000000000000000 > (10 -18 )
femto (seit C++11) std :: ratio < 1 , 1000000000000000 > (10 -15 )
pico (seit C++11) std :: ratio < 1 , 1000000000000 > (10 -12 )
nano (seit C++11) std :: ratio < 1 , 1000000000 > (10 -9 )
micro (seit C++11) std :: ratio < 1 , 1000000 > (10 -6 )
milli (seit C++11) std :: ratio < 1 , 1000 > (10 -3 )
centi (seit C++11) std :: ratio < 1 , 100 > (10 -2 )
deci (seit C++11) std :: ratio < 1 , 10 > (10 -1 )
deca (seit C++11) std :: ratio < 10 , 1 > (10 1 )
hecto (seit C++11) std :: ratio < 100 , 1 > (10 2 )
kilo (seit C++11) std :: ratio < 1000 , 1 > (10 3 )
mega (seit C++11) std :: ratio < 1000000 , 1 > (10 6 )
giga (seit C++11) std :: ratio < 1000000000 , 1 > (10 9 )
tera (seit C++11) std :: ratio < 1000000000000 , 1 > (10 12 )
peta (seit C++11) std :: ratio < 1000000000000000 , 1 > (10 15 )
exa (seit C++11) std :: ratio < 1000000000000000000 , 1 > (10 18 )
zetta (seit C++11) std :: ratio < 1000000000000000000000 , 1 > (10 21 ) [2]
yotta (seit C++11) std :: ratio < 1000000000000000000000000 , 1 > (10 24 ) [2]
ronna (seit C++26) std :: ratio < 1000000000000000000000000000 , 1 > (10 27 ) [2]
quetta (seit C++26) std :: ratio < 1000000000000000000000000000000 , 1 > (10 30 ) [2]
  1. 1.0 1.1 1.2 1.3 Diese Typdefinitionen werden nur deklariert, wenn std::intmax_t den Nenner darstellen kann.
  2. 2.0 2.1 2.2 2.3 Diese Typdefinitionen werden nur deklariert, wenn std::intmax_t den Zähler darstellen kann.

Inhaltsverzeichnis

Verschachtelte Typen

Typ Definition
type std :: ratio < num, den > (der rationale Typ nach Kürzung)

Datenmitglieder

In den unten angegebenen Definitionen,

  • sign ( Denom ) ist - 1 wenn Denom negativ ist, oder 1 andernfalls; und
  • gcd ( Num, Denom ) ist der größte gemeinsame Teiler von std :: abs ( Num ) und std :: abs ( Denom ) .
Mitglied Definition
constexpr std:: intmax_t num
[static]
sign ( Denom ) * Num / gcd ( Num, Denom )
(öffentliche statische Mitgliedskonstante)
constexpr std:: intmax_t den
[static]
std :: abs ( Denom ) / gcd ( Num, Denom )
(öffentliche statische Mitgliedskonstante)

Hinweise

Feature-Test Makro Wert Std Funktion
__cpp_lib_ratio 202306L (C++26) Hinzufügen der neuen SI-Präfixe von 2022: quecto, quetta, ronto, ronna

Beispiel

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

Siehe auch

Mathematische Konstanten (C++20) stellt mehrere mathematische Konstanten bereit, wie z.B. std::numbers::e für e