# std::ratio

C++
 Language Concepts Utilities library Strings library Containers library Algorithms library Iterators library Numerics library Input/output library Localizations library Regular expressions library (C++11) Atomic operations library (C++11) Thread support library (C++11)

Numerics library
Common mathematical functions
Floating-point environment
Complex numbers
Numeric arrays
Pseudo-random number generation
Compile-time rational arithmetic (C++11)
Generic numeric operations
 iota (C++11)
 accumulate
 inner_product
 partial_sum

Compile time rational arithmetic
 ratio (C++11)
Arithmetic
 ratio_subtract (C++11)
 ratio_multiply (C++11)
 ratio_divide (C++11)
Comparison
 ratio_equal (C++11)
 ratio_not_equal (C++11)
 ratio_less (C++11)
 ratio_less_equal (C++11)
 ratio_greater (C++11)
 ratio_greater_equal (C++11)

 Defined in header template<     std::intmax_t Num,     std::intmax_t Denom = 1 > class ratio; (since C++11)

The class template std::ratio provides compile-time rational arithmetic support. Each instantiation of this template exactly represents any finite rational number as long as its numerator Num and denominator Denom are representable as compile-time constants of type std::intmax_t. In addition, Denom may not be zero and may not be equal to the most negative value. Both numerator and denominator are automatically reduced to the lowest terms.

Several convenience typedefs that correspond to the SI ratios are provided by the standard library:

 Defined in header Type Definition yocto std::ratio<1, 1000000000000000000000000>, if std::intmax_t can represent the denominator zepto std::ratio<1, 1000000000000000000000>, if std::intmax_t can represent the denominator atto std::ratio<1, 1000000000000000000> femto std::ratio<1, 1000000000000000> pico std::ratio<1, 1000000000000> nano std::ratio<1, 1000000000> micro std::ratio<1, 1000000> milli std::ratio<1, 1000> centi std::ratio<1, 100> deci std::ratio<1, 10> deca std::ratio<10, 1> hecto std::ratio<100, 1> kilo std::ratio<1000, 1> mega std::ratio<1000000, 1> giga std::ratio<1000000000, 1> tera std::ratio<1000000000000, 1> peta std::ratio<1000000000000000, 1> exa std::ratio<1000000000000000000, 1> zetta std::ratio<1000000000000000000000, 1>, if std::intmax_t can represent the numerator yotta std::ratio<1000000000000000000000000, 1>, if std::intmax_t can represent the numerator

### Template parameters

 Num - defines the numerator of the ratio Denom - defines the denominator of the ratio. It cannot be equal to ​0​ or the most negative value of std::intmax_t

### Member types

 Member type Definition type std::ratio

### Member objects

 constexpr intmax_t num [static] constexpr value of type std::intmax_t equal to sign(Num) * sign(Denom) * abs(Num) / gcd(Num, Denom) (public static member constant) constexpr intmax_t den [static] constexpr value of type std::intmax_t equal to abs(Denom) / gcd(Num, Denom) (public static member constant)