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

Шаблон класса 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 (since 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 > (10 1 )
hecto (начиная с C++11) std:: ratio < 100 , 1 > (10 2 )
kilo (начиная с C++11) std:: ratio < 1000 , 1 > (10 3 )
mega (начиная с C++11) std:: ratio < 1000000 , 1 > (10 6 )
giga (начиная с C++11) std:: ratio < 1000000000 , 1 > (10 9 )
tera (начиная с C++11) std:: ratio < 1000000000000 , 1 > (10 12 )
peta (начиная с C++11) std:: ratio < 1000000000000000 , 1 > (10 15 )
exa (начиная с C++11) std:: ratio < 1000000000000000000 , 1 > (10 18 )
zetta (начиная с C++11) std:: ratio < 1000000000000000000000 , 1 > (10 21 ) [2]
yotta (начиная с C++11) std:: ratio < 1000000000000000000000000 , 1 > (10 24 ) [2]
ronna (начиная с C++26) std:: ratio < 1000000000000000000000000000 , 1 > (10 27 ) [2]
quetta (начиная с C++26) std:: ratio < 1000000000000000000000000000000 , 1 > (10 30 ) [2]
  1. 1.0 1.1 1.2 1.3 Эти typedef объявляются только если std::intmax_t может представить знаменатель.
  2. 2.0 2.1 2.2 2.3 Эти typedef объявляются только если std::intmax_t может представить числитель.

Арифметика рациональных чисел на этапе компиляции

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

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

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

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

Определено в заголовочном файле <ratio>
сравнивает два объекта ratio на равенство во время компиляции
(шаблон класса)
сравнивает два объекта ratio на неравенство во время компиляции
(шаблон класса)
(C++11)
сравнивает два объекта ratio на отношение меньше во время компиляции
(шаблон класса)
сравнивает два объекта ratio на отношение меньше или равно во время компиляции
(шаблон класса)
сравнивает два объекта ratio на отношение больше во время компиляции
(шаблон класса)
сравнивает два объекта ratio на отношение больше или равно во время компиляции
(шаблон класса)