将整数提升到C中另一个整数的幂的最有效方法是什么?
// 2^3
pow(2,3) == 8
// 5^5
pow(5,5) == 3125
Run Code Online (Sandbox Code Playgroud) 我想将浮点数舍入到给定的精度,例如:
0.051 i want to convert it to
0.1
0.049 i want to convert it to
0.0
0.56 i want to convert it to
0.6
0.54 i want to convert it to
0.5
Run Code Online (Sandbox Code Playgroud)
我无法更好地解释它,但其原因是将点位置(如0.131f,0.432f)转换为网格中瓷砖的位置(如0.1f,0.4f).
我们知道由于各种原因,C++中没有标准的整数幂函数.我用相当小的整数执行精确算术,计算能力的正确方法是什么?
Stack Overflow用许多其他语言回答了这个问题,但不是C.所以我想我会问,因为我有同样的问题.
如何在C中连接两个整数?
例:
x = 11;
y = 11;
Run Code Online (Sandbox Code Playgroud)
我想z如下:
z = 1111;
Run Code Online (Sandbox Code Playgroud)
其他示例尝试使用字符串执行此操作.没有字符串的方法是什么?
我正在寻找一种在C中执行此操作的有效方法,因为在我的特定用法中,这将成为代码的时间关键部分.
提前致谢!
我想创建一个返回整数幂的函数.请阅读fmuecke 在c ++中的整数幂解决方案 .
但是,我想将他的解决方案推广到任意类型T.由于c ++ 11有constexpr,我想这是可能的.
天真,我尝试过类似的东西,
template<class T, int N>
inline constexpr T pow(const T x){
return pow<N-1>(x) * x;
}
template<class T>
inline constexpr T pow<T, 1>(const T x){
return x;
}
template<class T>
inline constexpr T pow<T, 0>(const T x){
return 1;
}
Run Code Online (Sandbox Code Playgroud)
实际上这种方法失败了,因为不允许对函数模板进行部分特化.
还有一个问题.我听说编译器是否在编译时评估constexpr函数是由编译器决定的.如何强制它计算一般类型.我从某处读到,对于整数consts来说,最简单的一个方法是将它包装在std :: integral_const :: value中.