std::ratio代表一个比例,或者说比率。其实就是将给定的两个整数分别除以它们的最大公约数得到一个分数(分子及分母)。分数通过分子和分母分开表示的方式来实现数据数据的分离,并可以实现两个分数之间的计算。如果想实际获取分数表示的double或者整数类型结果,需要通过除法运算符/来实现两个数据之间的运算。
1. 分数特定的运算单位
type | definition | description |
---|---|---|
yocto | ratio<1,1000000000000000000000000> | 10-24 * |
zepto | ratio<1,1000000000000000000000> | 10-21 * |
atto | ratio<1,1000000000000000000> | 10-18 |
femto | ratio<1,1000000000000000> | 10-15 |
pico | ratio<1,1000000000000> | 10-12 |
nano | ratio<1,1000000000> | 10-9 |
micro | ratio<1,1000000> | 10-6 |
milli | ratio<1,1000> | 10-3 |
centi | ratio<1,100> | 10-2 |
deci | ratio<1,10> | 10-1 |
deca | ratio<10,1> | 101 |
hecto | ratio<100,1> | 102 |
kilo | ratio<1000,1> | 103 |
mega | ratio<1000000,1> | 106 |
giga | ratio<1000000000,1> | 109 |
tera | ratio<1000000000000,1> | 1012 |
peta | ratio<1000000000000000,1> | 1015 |
exa | ratio<1000000000000000000,1> | 1018 |
zetta | ratio<1000000000000000000000,1> | 1021 * |
yotta | ratio<1000000000000000000000000,1> | 1024 * |
实际计算实例
// ratio example
#include <iostream>
#include <ratio>
int main ()
{
typedef std::ratio<1,3> one_third;
typedef std::ratio<2,4> two_fourths;
std::cout << "one_third= " << one_third::num << "/" << one_third::den << std::endl;
std::cout << "two_fourths= " << two_fourths::num << "/" << two_fourths::den << std::endl;
typedef std::ratio_add<one_third,two_fourths> sum;
std::cout << "sum= " << sum::num << "/" << sum::den;
std::cout << " (which is: " << ( double(sum::num) / sum::den ) << ")" << std::endl;
std::cout << "1 kilogram has " << ( std::kilo::num / std::kilo::den ) << " grams";
std::cout << std::endl;
return 0;
}
输出结果为
one_third= 1/3 two_fourths= 1/2 sum= 5/6 (which is 0.833333) 1 kilogram has 1000 grams
2. 类涉及方法
涉及分数的加减乘除相等等运算