可以使用Math.Pow(10,n)吗?

use*_*719 21 .net c# math

我需要计算功率(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%的场景中,支持内置函数而不是自定义实现.这使您的代码更清晰,节省了大量工作,并减少了出错的机会.

只有当你想到以不同的方式使用内置函数时,或者当它们有严重的延迟问题时(自己从未遇到过这些场景,说实话),你应该考虑构建一个实现.


Cod*_*aos 9

如果base和exponent都是整数,则可以考虑不使用Pow.但即使在那种情况下,Pow通常更好,因为它更具可读性.如果至少有一个是浮点值,请使用Pow.

如果指数为0.5,则应使用Sqrt,如果指数为小整数(2,3,4),则表示具有乘法的公式更快,但可读性更低.

如果你想用整数指数实现快速求幂,那么Square-and-Multiply算法而不是简单的循环可能就是你想要的.但在大多数情况下,Pow仍然更快.


And*_*and 8

对于整数,可能for循环比Math.Pow可能处理浮点数的速度快.但我严重怀疑你的情况有多大差异(尽管我不知道).

但是如果你使用32位有符号整数,那么你只能为n <= 9存储10 ^ n的值.但是你可以通过将这九个(十)个幂存储在10中来获得速度(也许是可读性)数组.这并不难:它们是(1),10,100,1000,....

如果需要为较大的n计算10 ^ n,则需要使用浮点数.然后没有任何理由不使用Math.Pow.这是最快的,并且易于阅读.