Арифметика рациональных чисел на этапе компиляции (начиная с 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 (начиная с 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>(101) |
hecto (начиная с C++11) | std::ratio<100,1>(102) |
kilo (начиная с C++11) | std::ratio<1000,1>(103) |
mega (начиная с C++11) | std::ratio<1000000,1>(106) |
giga (начиная с C++11) | std::ratio<1000000000,1>(109) |
tera (начиная с C++11) | std::ratio<1000000000000,1>(1012) |
peta (начиная с C++11) | std::ratio<1000000000000000,1>(1015) |
exa (начиная с C++11) | std::ratio<1000000000000000000,1>(1018) |
zetta (начиная с C++11) | std::ratio<1000000000000000000000,1>(1021)[2] |
yotta (начиная с C++11) | 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/cpp/numeric/ratio