我需要计算功率(10,n)
可以使用Math.Pow (10, n)
吗?
或者我应该使用循环?
for (int i = 0; i < n; i++){
x*=10;
}
Run Code Online (Sandbox Code Playgroud)
哪一个更好?为什么?
Ore*_*n A 10
Math.Pow
更好.
这是一个经验法则 - 在99%的场景中,支持内置函数而不是自定义实现.这使您的代码更清晰,节省了大量工作,并减少了出错的机会.
只有当你想到以不同的方式使用内置函数时,或者当它们有严重的延迟问题时(自己从未遇到过这些场景,说实话),你应该考虑构建一个实现.
如果base和exponent都是整数,则可以考虑不使用Pow.但即使在那种情况下,Pow通常更好,因为它更具可读性.如果至少有一个是浮点值,请使用Pow.
如果指数为0.5,则应使用Sqrt,如果指数为小整数(2,3,4),则表示具有乘法的公式更快,但可读性更低.
如果你想用整数指数实现快速求幂,那么Square-and-Multiply算法而不是简单的循环可能就是你想要的.但在大多数情况下,Pow仍然更快.
对于整数,可能for循环比Math.Pow
可能处理浮点数的速度快.但我严重怀疑你的情况有多大差异(尽管我不知道).
但是如果你使用32位有符号整数,那么你只能为n <= 9存储10 ^ n的值.但是你可以通过将这九个(十)个幂存储在10中来获得速度(也许是可读性)数组.这并不难:它们是(1),10,100,1000,....
如果需要为较大的n计算10 ^ n,则需要使用浮点数.然后没有任何理由不使用Math.Pow
.这是最快的,并且易于阅读.