- ratio[meta header]
- std[meta namespace]
- type-alias[meta id-type]
- cpp11[meta cpp]
namespace std {
using yocto = ratio<1, 1000000000000000000000000>;
using zepto = ratio<1, 1000000000000000000000>;
using atto = ratio<1, 1000000000000000000>;
using femto = ratio<1, 1000000000000000>;
using pico = ratio<1, 1000000000000>;
using nano = ratio<1, 1000000000>;
using micro = ratio<1, 1000000>;
using milli = ratio<1, 1000>;
using centi = ratio<1, 100>;
using deci = ratio<1, 10>;
using deca = ratio< 10, 1>;
using hecto = ratio< 100, 1>;
using kilo = ratio< 1000, 1>;
using mega = ratio< 1000000, 1>;
using giga = ratio< 1000000000, 1>;
using tera = ratio< 1000000000000, 1>;
using peta = ratio< 1000000000000000, 1>;
using exa = ratio< 1000000000000000000, 1>;
using zetta = ratio< 1000000000000000000000, 1>;
using yotta = ratio<1000000000000000000000000, 1>;
}
- ratio[link ratio.md]
これらは、コンパイル時有理数であるratio
を利用した、SI単位系(The International System of Units : 国際単位系)の接頭辞を表す型である。
型 | 説明 |
---|---|
yocto |
ヨクト |
zepto |
ゼプト |
atto |
アト |
femto |
フェムト |
pico |
ピコ |
nano |
ナノ |
micro |
マイクロ |
milli |
ミリ |
centi |
センチ |
deci |
デシ |
deca |
デカ |
hecto |
ヘクト |
kilo |
キロ |
mega |
メガ |
giga |
ギガ |
tera |
テラ |
peta |
ペタ |
exa |
エクサ |
zetta |
ゼタ |
yotta |
ヨタ |
yocto
、zepto
、zetta
、yotta
は、intmax_t
型で値を表現できる場合のみ定義され、表現できない場合は定義されない。
#include <iostream>
#include <ratio>
#include <chrono>
// ミリメートル、センチメートル、メートル
using milli_meter = std::chrono::duration<float, std::milli>;
using centi_meter = std::chrono::duration<float, std::centi>;
using meter = std::chrono::duration<float, std::ratio<1>>;
// 三角形の面積
// base : 底辺
// height : 高さ
centi_meter triangle_area(centi_meter base, centi_meter height)
{
return base * height.count() / centi_meter::rep(2.0);
}
int main()
{
milli_meter base(3000); // 3000mm -> 3cm
meter height(1); // 1m -> 100cm
centi_meter area = triangle_area(base, height);
std::cout << area.count() << std::endl;
}
- std::milli[color ff0000]
- std::centi[color ff0000]
- std::ratio[link ratio.md]
- std::chrono::duration[link /reference/chrono/duration.md]
- area.count()[link /reference/chrono/duration/count.md]
15000
- C++11
- Clang, C++11 mode: 3.0
- GCC, C++11 mode: 4.4.7
- Visual C++: ??