嘿,这一切希望是一个简单的问题来回答,但这对我来说是全新的,我不知道为什么会这样。采用以下C++代码:
template<class T>
T expo(T a, T b){
T result = 1;
while(b) {
if(b & 1)result *= a;
b >>=1 ;
a *= a;
}
return result;
}
int main() {
cout << std::pow<size_t>(50, 5) << endl;
cout << expo<size_t>(50, 5) << endl;
}
输出是:
3.125e+008
312500000
两者都是正确的,但将std::pow()
输出格式化为科学计数法。它到底是怎么做到的?一定有一个我一直缺少的C++特性。帮助!