C++/ratio
< C++
定義了類模板:
template<
std::intmax_t Num,
std::intmax_t Denom = 1
> class ratio;
類模板std::ratio提供了編譯時有理數算術支持。類模板的實例表示有限的有理數,只要其分子和分母可表示為編譯時的類型std::intmax_t的常量。此外,分子不可以為0,也不可以為最大負值。
兩個靜態數據類型num 和 den表示除掉最大公約數之後的分子和分母的值。但是,兩個std::ratio有不同的Num和Denom是不同的類型,即使它們在約減後表示相同有理數。有理數類型的成員type表示其最約簡的有理數形式,如std::ratio<3, 6>::type 為 std::ratio<1, 2>。
標準庫已經定義了SI有理數:
- yocto std::ratio<1, 1000000000000000000000000>, 如果std::intmax_t能表示分母
- zepto std::ratio<1, 1000000000000000000000>, 如果std::intmax_t能表示分母
- 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>, 如果std::intmax_t能表示分子
- yotta std::ratio<1000000000000000000000000, 1>, 如果std::intmax_t能表示分子