Table of Contents

<ratio>

<ratio> provides compile-time rational number arithmetic via std::ratio<Num, Den>. Ratios are commonly used as template parameters for durations (e.g., std::chrono::milliseconds is std::ratio<1, 1000>).

Most code doesn't use this directly; you encounter it when working with std::chrono::duration.

Example

This example defines and uses ratio types to represent milliseconds and microseconds, querying their numerator and denominator.

// compile: g++ -std=c++11 -o ratioexample ratioexample.cpp
// run: ./ratioexample
// description: compile-time rational arithmetic
 
#include <ratio>
#include <iostream>
 
using milliseconds = std::ratio<1, 1000>;
using microseconds = std::ratio<1, 1000000>;
 
int main() {
    std::cout << "milliseconds: " << milliseconds::num << "/" << milliseconds::den << "\n";
    std::cout << "microseconds: " << microseconds::num << "/" << microseconds::den << "\n";
 
    using mega = std::ratio<1000000>;
    std::cout << "mega: " << mega::num << "/" << mega::den << "\n";
 
    return 0;
}