std:: ratio
|
Défini dans l'en-tête
<ratio>
|
||
|
template
<
std::
intmax_t
Num,
|
(depuis C++11) | |
Le modèle de classe
std::ratio
fournit un support pour
l'arithmétique rationnelle à la compilation
. Chaque instanciation de ce modèle représente exactement tout nombre rationnel fini tant que son numérateur
Num
et son dénominateur
Denom
sont représentables comme des constantes à la compilation de type
std::intmax_t
. De plus,
Denom
ne peut pas être zéro et ni
Num
ni
Denom
ne peuvent être égaux à la valeur la plus négative.
Les membres de données statiques
num
et
den
représentant le numérateur et le dénominateur sont calculés en divisant
Num
et
Denom
par leur plus grand commun diviseur. Cependant, deux
std::ratio
avec des
Num
ou
Denom
différents sont des types distincts même s'ils représentent le même nombre rationnel (après réduction). Un type
std::ratio
peut être réduit à ses termes les plus simples via son membre
type
:
std
::
ratio
<
3
,
6
>
::
type
est
std
::
ratio
<
1
,
2
>
.
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.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.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.
Table des matières |
Types imbriqués
| Type | Définition |
type
|
std :: ratio < num, den > (le type rationnel après réduction) |
Membres de données
Dans les définitions données ci-dessous,
- sign ( Denom ) vaut - 1 si Denom est négatif, ou 1 sinon ; et
- gcd ( Num, Denom ) est le plus grand commun diviseur de std :: abs ( Num ) et std :: abs ( Denom ) .
| Membre | Définition |
|
constexpr
std::
intmax_t
num
[static]
|
sign
(
Denom
)
*
Num
/
gcd
(
Num, Denom
)
(constante de membre public static) |
|
constexpr
std::
intmax_t
den
[static]
|
std
::
abs
(
Denom
)
/
gcd
(
Num, Denom
)
(constante de membre public static) |
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_ratio
|
202306L
|
(C++26) | Ajout des nouveaux préfixes SI 2022 : quecto, quetta, ronto, ronna |
Exemple
#include <ratio> static_assert ( std::ratio_equal_v<std::ratio_multiply<std::femto, std::exa>, std::kilo> ); int main() {}
Voir aussi
| Constantes mathématiques (C++20) | fournit plusieurs constantes mathématiques, telles que std::numbers::e pour e |