home | help
std::ratio(3)		       C++ Standard Libary		   std::ratio(3)

NAME
     std::ratio - std::ratio

Synopsis
	Defined in header <ratio>
	template<

	    std::intmax_t Num,	     (since C++11)
	    std::intmax_t Denom = 1

	> class ratio;

	The  class template std::ratio provides compile-time rational arithmetic
     support.
	Each instantiation of this template exactly represents any finite ratio-
     nal 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
     both Num and
	Denom may not be equal to the most negative value.

	The static data members num and den representing the numerator	and  de-
     nominator are
	calculated  by	dividing Num and Denom by their greatest common divisor.
     However, two
	std::ratio with different Num or Denom are distinct types even	if  they
     represent the
	same rational number (after reduction). A std::ratio type can be reduced
     to the
	lowest	terms  via  its  type member: std::ratio<3, 6>::type is std::ra-
     tio<1, 2>.

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

	Defined in header <ratio>
	Type		     Definition
	quecto	 (since  C++26)  std::ratio<1,	1000000000000000000000000000000>
     (10^-30)^[1]
	ronto	(since	 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>	    (10^1)
	hecto		     std::ratio<100, 1>     (10^2)
	kilo		     std::ratio<1000, 1>    (10^3)
	mega		     std::ratio<1000000, 1> (10^6)
	giga		     std::ratio<1000000000, 1>		(10^9)
	tera		     std::ratio<1000000000000, 1>	(10^12)
	peta		     std::ratio<1000000000000000, 1>	(10^15)
	exa		     std::ratio<1000000000000000000, 1> (10^18)
	zetta			    std::ratio<1000000000000000000000,	      1>
     (10^21)^[2]
	yotta			  std::ratio<1000000000000000000000000,       1>
     (10^24)^[2]
	ronna	(since	 C++26)    std::ratio<1000000000000000000000000000,   1>
     (10^27)^[2]
	quetta	(since	C++26)	std::ratio<1000000000000000000000000000000,   1>
     (10^30)^[2]

	 1.  a	^1.0 ^1.1 ^1.2 ^1.3 These typedefs are only defined if std::int-
     max_t can
	    represent the denominator.
	 2. a ^2.0 ^2.1 ^2.2 ^2.3 These typedefs are only defined  if  std::int-
     max_t can
	    represent the numerator.

Notes
	Feature-test macro  Value    Std			Feature
	__cpp_lib_ratio     202306L  (C++26)  Adding  the  new 2022 SI prefixes:
     quecto, quetta,
					   ronto, ronna

Example
     // Run this code

      #include <ratio>

      static_assert
      (
	  std::ratio_equal_v<std::ratio_multiply<std::femto,	      std::exa>,
     std::kilo>
      );

      int main() {}

See also
	Mathematical  constants (C++20) provides several mathematical constants,
     such as
				       std::numbers::e for e

http://cppreference.com 	   2024.06.10			   std::ratio(3)

home | help