namespace std {
template <intmax_t N, intmax_t D = 1>
class ratio {
public:
using type = ratio<num, den>;
static constexpr intmax_t num;
static constexpr intmax_t den;
};
}
概要
ratio
は、コンパイル時に有理数を表現するためのクラスである。メンバ定数として、num
(分子:numerator)とden
(分母:denominator)を持つ。
num
とden
の値は、gcd(最大公約数:the greatest common divisor)を使用して、以下のようにN
とD
を約分して割り当てる:
要件
den
の値が0
でもなく、intmax_t
の最小値でもないこと。
例
#include <ratio>
int main()
{
using r = std::ratio<3, 12>;
static_assert(r::num == 1, "num is 1");
static_assert(r::den == 4, "den is 4");
}
xxxxxxxxxx
#include <ratio>
int main()
{
using r = std::ratio<3, 12>;
static_assert(r::num == 1, "num is 1");
static_assert(r::den == 4, "den is 4");
}
出力
バージョン
言語
- C++11
処理系
- Clang: 3.0 ✅
- GCC: 4.4.7 ✅
- Visual C++: ??