Рациональная арифметика во время компиляции (с C++11)
Шаблон класса std::ratio и связанные шаблоны обеспечивают поддержку рациональной арифметики во время компиляции. Каждая инстанциация этого шаблона точно представляет любое конечное рациональное число.
Рациональные дроби во время компиляции
Определено в заголовочном файле <ratio> |
|
|---|---|
|
(C++11) | представляет точную рациональную дробь (шаблон класса) |
В стандартной библиотеке предоставляются следующие удобные определения типов, соответствующие соотношениям СИ:
Определено в заголовочном файле <ratio> |
|
|---|---|
| Тип | Определение |
quecto (с C++26) | std::ratio<1, 1000000000000000000000000000000>(10-30)[1] |
ronto (с C++26) | std::ratio<1, 1000000000000000000000000000>(10-27)[1] |
yocto | std::ratio<1, 1000000000000000000000000>(10-24)[1] |
zepto | std::ratio<1, 1000000000000000000000>(10-21)[1] |
atto | std::ratio<1, 1000000000000000000>(10-18) |
femto | std::ratio<1, 1000000000000000>(10-15) |
pico | std::ratio<1, 1000000000000>(10-12) |
nano | std::ratio<1, 1000000000>(10-9) |
micro | std::ratio<1, 1000000>(10-6) |
milli | std::ratio<1, 1000>(10-3) |
centi | std::ratio<1, 100>(10-2) |
deci | std::ratio<1, 10>(10-1) |
deca | std::ratio<10, 1>(101) |
hecto | std::ratio<100, 1>(102) |
kilo | std::ratio<1000, 1>(103) |
mega | std::ratio<1000000, 1>(106) |
giga | std::ratio<1000000000, 1>(109) |
tera | std::ratio<1000000000000, 1>(1012) |
peta | std::ratio<1000000000000000, 1>(1015) |
exa | std::ratio<1000000000000000000, 1>(1018) |
zetta | std::ratio<1000000000000000000000, 1>(1021)[2] |
yotta | std::ratio<1000000000000000000000000, 1>(1024)[2] |
ronna (с C++26) | std::ratio<1000000000000000000000000000, 1>(1027)[2] |
quetta (с C++26) | std::ratio<1000000000000000000000000000000, 1>(1030)[2] |
- Эти определения типов существуют только если
std::intmax_tможет представить знаменатель. - Эти определения типов существуют только если
std::intmax_tможет представить числитель.
Рациональная арифметика во время компиляции
Несколько шаблонов псевдонимов, выполняющих арифметические операции над объектами ratio во время компиляции, предоставляются.
Определено в заголовке <ratio> |
|
|---|---|
|
(C++11) | складывает два ratio объекта во время компиляции(псевдоним шаблона) |
|
(C++11) | вычитает два ratio объекта во время компиляции(псевдоним шаблона) |
|
(C++11) | умножает два ratio объекта во время компиляции(псевдоним шаблона) |
|
(C++11) | делит два ratio объекта во время компиляции(псевдоним шаблона) |
Сравнение рациональных чисел во время компиляции
Несколько шаблонов классов, выполняющих операции сравнения ratio объектов во время компиляции, предоставляются.
Определено в заголовке <ratio> |
|
|---|---|
|
(C++11) | сравнивает два ratio объекта на равенство во время компиляции (шаблон класса) |
|
(C++11) | сравнивает два ratio объекта на неравенство во время компиляции (шаблон класса) |
|
(C++11) | сравнивает два ratio объекта на меньше во время компиляции (шаблон класса) |
|
(C++11) | сравнивает два ratio объекта на меньше или равно во время компиляции (шаблон класса) |
|
(C++11) | сравнивает два ratio объекта на больше во время компиляции (шаблон класса) |
|
(C++11) | сравнивает два ratio объекта на больше или равно во время компиляции (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/ratio