如何使用比率而不是浮点数?
How do I use ratio Instead of a float?
所以我知道我不能使用float
作为模板参数:
template<float T>
float foo(const float param) { return param + T; }
我听说ratio
可以用作替代方案。我想做这样的事情:
template<ratio T>
float foo(const float param) { return param * T::num / static_cast<float>(T::den); }
不幸的是,ratio
不是一个完整的类型,所以这根本不起作用。最终我不得不问,为什么不干脆做:
template<int Num, int Denom>
float foo(const float param) { return param * Num / static_cast<float>(Denom); }
我更喜欢使用ratio
,因为它更清楚地代表了我正在尝试做的事情。 有人可以为我提供一种简单的方法来使用ratio
吗?
没有类型ratio
.std::ratio
是一个类模板。此模板本身具有分子和分母作为模板参数。
如果你想使用std::ratio
可以这样完成:
template<class T>
float foo(const float param) {
return param * T::num / static_cast<float>(T::den);
}
auto x = foo<std::ratio<4,7>>(42);
相关文章:
- 使用提升将数据从 PyObject 复制到浮点数 *
- 使用浮点数和双精度数的非常小数字的数学
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 使用 int 指针的浮点数的位表示形式
- 使用 Python 导出 4 个字节浮点数
- 如何使用比率而不是浮点数?
- 找到一种使用 C++ 中的条件提取浮点数的方法
- Arduino使用sscanf读取浮点数
- 使用 avr-gcc 隐式转换为浮点数:uint8_t vs. uint16_t
- 在包含浮点数的结构上使用 memset()
- 使用 std::cin 的输入仅适用于浮点数,仅当值尾随字母"e"(大写和小写)时
- 使用按位 AND 和 popcount 而不是实际的 int 或浮点数乘法进行大 (0,1) 矩阵乘法
- 在不使用 * 和 / 运算符的情况下将两个浮点数相乘和除以
- 在 c++ 中使用浮点数、双精度打印十进制
- 如何使用 sscanf 提取浮点数?
- 如何使用 c++ 模板实现整数、字符串、浮点数和日期对象的数组
- 如何在 c++ 中使用 FFT 从 32 位浮点数组中提取频率
- 移植将 32 位浮点数与使用 64 位进行比较的代码,此值表示什么
- SSE 内部函数:屏蔽浮点数并使用按位 and