我的C++分数类使用笔记。
分数类
std::ratio
模板类用于表示由分子(numerator)和分母(denumerator)表示的有限有理数;- 分子分母都是
intmax_t
类型的编译时常数,支持最大宽度的整数类型; -
使用时需要包含头文件:
#include <ratio>
-
原型声明:
// N Numerator 分子 // D Denominator 分母,默认值为1 template <intmax_t N, intmax_t D = 1> class ratio;
-
数据成员:
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 |