在线文档教程
C++
数字 | Numerics

std::ratio_multiply

性病::比率[医]倍增

Defined in header
template< class R1, class R2 > using ratio_multiply = /* see below */;

别名模板std::ratio_multiply表示两个精确有理数相乘的结果。std::ratio专门性R1R2...

结果是std::ratio专业化std::ratio<U, V>,以至于Num == R1::num * R2::num和Denom == R1::den * R2::den%28计算,没有算术溢出%29,U是std::ratio<Num, Denom>::num和V是std::ratio<Num, Denom>::den...

注记

如果UV不能在std::intmax_t,这个节目的形式不太好。如果NumDenom不能在std::intmax_t,除非实现产生正确的值,否则程序的格式是错误的。UV...

上述定义要求std::ratio_multiply<R1, R2>已降至最低;例如,std::ratio_multiply<std::ratio<1, 6>,std::ratio<4, 5>>是与std::ratio<2, 15>...

二次

#include <iostream> #include <ratio> int main() { typedef std::ratio<2, 3> two_third; typedef std::ratio<1, 6> one_sixth; typedef std::ratio_multiply<two_third, one_sixth> r; std::cout << "2/3 * 1/6 = " << r::num << '/' << r::den << '\n'; }

二次

产出:

二次

2/3 * 1/6 = 1/9

二次

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cpPreference.com/w/cpp/数值/比率/比率[医]倍增