Spec-Zone.ru › C++

Рациональная арифметика во время компиляции (с C++11)

Шаблон класса std::ratio и связанные шаблоны обеспечивают поддержку рациональной арифметики во время компиляции. Каждая инстанциация этого шаблона точно представляет любое конечное рациональное число.

Рациональные дроби во время компиляции

Определено в заголовочном файле <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]
  1. Эти определения типов существуют только если std::intmax_t может представить знаменатель.
  2. Эти определения типов существуют только если std::intmax_t может представить числитель.

Рациональная арифметика во время компиляции

Несколько шаблонов псевдонимов, выполняющих арифметические операции над объектами ratio во время компиляции, предоставляются.

Определено в заголовке <ratio>
ratio_add
(C++11)
складывает два ratio объекта во время компиляции
(псевдоним шаблона)
ratio_subtract
(C++11)
вычитает два ratio объекта во время компиляции
(псевдоним шаблона)
ratio_multiply
(C++11)
умножает два ratio объекта во время компиляции
(псевдоним шаблона)
ratio_divide
(C++11)
делит два ratio объекта во время компиляции
(псевдоним шаблона)

Сравнение рациональных чисел во время компиляции

Несколько шаблонов классов, выполняющих операции сравнения ratio объектов во время компиляции, предоставляются.

Определено в заголовке <ratio>
ratio_equal
(C++11)
сравнивает два ratio объекта на равенство во время компиляции
(шаблон класса)
ratio_not_equal
(C++11)
сравнивает два ratio объекта на неравенство во время компиляции
(шаблон класса)
ratio_less
(C++11)
сравнивает два ratio объекта на меньше во время компиляции
(шаблон класса)
ratio_less_equal
(C++11)
сравнивает два ratio объекта на меньше или равно во время компиляции
(шаблон класса)
ratio_greater
(C++11)
сравнивает два ratio объекта на больше во время компиляции
(шаблон класса)
ratio_greater_equal
(C++11)
сравнивает два ratio объекта на больше или равно во время компиляции
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/ratio

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API