C++分数类使用笔记

zxl19 2024-04-10

我的C++分数类使用笔记。

分数类

  1. std::ratio模板类用于表示由分子(numerator)和分母(denumerator)表示的有限有理数;
  2. 分子分母都是intmax_t类型的编译时常数,支持最大宽度的整数类型;
  3. 使用时需要包含头文件:

     #include <ratio>
    
  4. 原型声明:

     // N Numerator 分子
     // D Denominator 分母,默认值为1
     template <intmax_t N, intmax_t D = 1>
     class ratio;
    
  5. 数据成员:

     static constexpr intmax_t num;  // 分子
     static constexpr intmax_t den;  // 分母
    

国际单位制

对于实例化的std::ratio模板类定义了别名,用于表示国际单位制(International System of Units,Système International d’Unités,S.I.):

类型 定义 描述
yocto ratio<1, 1000000000000000000000000> 1e-24
zepto ratio<1, 1000000000000000000000> 1e-21
atto ratio<1, 1000000000000000000> 1e-18
femto ratio<1, 1000000000000000> 1e-15
pico ratio<1, 1000000000000> 1e-12
nano ratio<1, 1000000000> 1e-9
micro ratio<1, 1000000> 1e-6
milli ratio<1, 1000> 1e-3
centi ratio<1, 100> 1e-2
deci ratio<1, 10> 1e-1
deca ratio<10, 1> 1e1
hecto ratio<100, 1> 1e2
kilo ratio<1000, 1> 1e3
mega ratio<1000000, 1> 1e6
giga ratio<1000000000, 1> 1e9
tera ratio<1000000000000, 1> 1e12
peta ratio<1000000000000000, 1> 1e15
exa ratio<1000000000000000000, 1> 1e18
zetta ratio<1000000000000000000000, 1> 1e21
yotta ratio<1000000000000000000000000, 1> 1e24

参考

  1. cplusplus