Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The latest version of this topic can be found at <ratio>.
Include the standard header <ratio> to define constants and templates that are used to store and manipulate rational numbers at compile time.
Syntax
#include <ratio>
ratio Structure
struct ratio { static constexpr intmax_t num; static constexpr intmax_t den; typedef ratio<num, den>
type; };
The ratio Structure defines the static constants num and den such that num / den == N / D and num and den have no common factors. num / den is the value that is represented by the template class. Therefore, type designates the instantiation ratio<N0, D0> for which num == N0 and den == D0.
Specializations
<ratio> also defines specializations of ratio that have the following form.
template <class R1, class R2> struct ratio_specialization
Each specialization takes two template parameters that must also be specializations of ratio. The value of type is determined by an associated logical operation.
| Name | type Value |
|---|---|
ratio_add |
R1 + R2 |
ratio_divide |
R1 / R2 |
ratio_equal |
R1 == R2 |
ratio_greater |
R1 > R2 |
ratio_greater_equal |
R1 >= R2 |
ratio_less |
R1 < R2 |
ratio_less_equal |
R1 <= R2 |
ratio_multiply |
R1 * R2 |
ratio_not_equal |
!(R1 == R2) |
ratio_subtract |
R1 - R2 |
typedefs
typedef ratio<1, 1000000000000000000> atto;
typedef ratio<1, 1000000000000000> femto;
typedef ratio<1, 1000000000000> pico;
typedef ratio<1, 1000000000> nano;
typedef ratio<1, 1000000> micro;
typedef ratio<1, 1000> milli;
typedef ratio<1, 100> centi;
typedef ratio<1, 10> deci;
typedef ratio<10, 1> deca;
typedef ratio<100, 1> hecto;
typedef ratio<1000, 1> kilo;
typedef ratio<1000000, 1> mega;
typedef ratio<1000000000, 1> giga;
typedef ratio<1000000000000, 1> tera;
typedef ratio<1000000000000000, 1> peta;
typedef ratio<1000000000000000000, 1> exa;