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

Le modèle de classe std::ratio et les modèles associés fournissent un support pour l'arithmétique rationnelle à la compilation. Chaque instanciation de ce modèle représente exactement n'importe quel nombre rationnel fini.

Fractions à la compilation

Défini dans l'en-tête <ratio>
(C++11)
représente une fraction rationnelle exacte
(modèle de classe)

Les typedefs de commodité suivants, qui correspondent aux ratios SI, sont fournis par la bibliothèque standard :

Défini dans l'en-tête <ratio>
Type Définition
quecto (depuis C++26) std:: ratio < 1 , 1000000000000000000000000000000 > (10 -30 ) [1]
ronto (depuis C++26) std:: ratio < 1 , 1000000000000000000000000000 > (10 -27 ) [1]
yocto (depuis C++11) std:: ratio < 1 , 1000000000000000000000000 > (10 -24 ) [1]
zepto (depuis C++11) std:: ratio < 1 , 1000000000000000000000 > (10 -21 ) [1]
atto (depuis C++11) std:: ratio < 1 , 1000000000000000000 > (10 -18 )
femto (depuis C++11) std:: ratio < 1 , 1000000000000000 > (10 -15 )
pico (depuis C++11) std:: ratio < 1 , 1000000000000 > (10 -12 )
nano (depuis C++11) std:: ratio < 1 , 1000000000 > (10 -9 )
micro (depuis C++11) std:: ratio < 1 , 1000000 > (10 -6 )
milli (depuis C++11) std:: ratio < 1 , 1000 > (10 -3 )
centi (depuis C++11) std:: ratio < 1 , 100 > (10 -2 )
deci (depuis C++11) std:: ratio < 1 , 10 > (10 -1 )
deca (depuis C++11) std:: ratio < 10 , 1 > (10 1 )
hecto (depuis C++11) std:: ratio < 100 , 1 > (10 2 )
kilo (depuis C++11) std:: ratio < 1000 , 1 > (10 3 )
mega (depuis C++11) std:: ratio < 1000000 , 1 > (10 6 )
giga (depuis C++11) std:: ratio < 1000000000 , 1 > (10 9 )
tera (depuis C++11) std:: ratio < 1000000000000 , 1 > (10 12 )
peta (depuis C++11) std:: ratio < 1000000000000000 , 1 > (10 15 )
exa (depuis C++11) std:: ratio < 1000000000000000000 , 1 > (10 18 )
zetta (depuis C++11) std:: ratio < 1000000000000000000000 , 1 > (10 21 ) [2]
yotta (depuis C++11) std:: ratio < 1000000000000000000000000 , 1 > (10 24 ) [2]
ronna (depuis C++26) std:: ratio < 1000000000000000000000000000 , 1 > (10 27 ) [2]
quetta (depuis C++26) std:: ratio < 1000000000000000000000000000000 , 1 > (10 30 ) [2]
  1. 1.0 1.1 1.2 1.3 Ces typedefs ne sont déclarés que si std::intmax_t peut représenter le dénominateur.
  2. 2.0 2.1 2.2 2.3 Ces typedefs ne sont déclarés que si std::intmax_t peut représenter le numérateur.

Arithmétique rationnelle à la compilation

Plusieurs modèles d'alias, qui effectuent des opérations arithmétiques sur ratio les objets au moment de la compilation sont fournis.

Défini dans l'en-tête <ratio>
(C++11)
additionne deux objets ratio à la compilation
(alias de modèle)
soustrait deux objets ratio à la compilation
(alias de modèle)
multiplie deux objets ratio à la compilation
(alias de modèle)
divise deux objets ratio à la compilation
(alias de modèle)

Comparaison rationnelle à la compilation

Plusieurs modèles de classe, qui effectuent des opérations de comparaison sur ratio les objets au moment de la compilation sont fournis.

Défini dans l'en-tête <ratio>
compare deux objets ratio pour l'égalité à la compilation
(modèle de classe)
compare deux objets ratio pour l'inégalité à la compilation
(modèle de classe)
(C++11)
compare deux objets ratio pour inférieur à à la compilation
(modèle de classe)
compare deux objets ratio pour inférieur ou égal à à la compilation
(modèle de classe)
compare deux objets ratio pour supérieur à à la compilation
(modèle de classe)
compare deux objets ratio pour supérieur ou égal à à la compilation
(modèle de classe)