戈朗 |是否可以在不使用数学库的情况下计算功率值?
Golang | Is it possible to calculate a power value without using math library?
我想知道如何使用 math
库计算功率值?
我已经查看了大多数方法都是使用math
库实现的计算功率值的方法(即math.Pow
)。
例如,如果我们想计算3^2,我们可以像Python中的3**2
那样做,所以我很好奇是否可以像[=22]那样做类似的方法=] 通过数学符号在 Go 中计算它?
谢谢!
没有 Go 运算符(“数学符号”)可以执行此操作,但如果指数是常数,您当然可以只写 x*x
表示 x^2,或 x*x*x
表示 x^ 3.
如果指数不是常数而是整数,计算 n^exp 的一种简单方法是使用重复乘法,如下所示:
func pow(n float64, exp int) float64 {
if exp < 0 { // handle negative exponents
n = 1 / n
exp = -exp
}
result := 1.0
for i := 0; i < exp; i++ {
result *= n
}
return result
}
就是说,我不太确定您为什么要避免使用 math.Pow
-- 它在标准库中,速度更快,更通用。
如果数字是整数,那么这应该有效:
package main
import (
"fmt"
)
func main() {
number := 4
power := 5
result := 1
for power != 0 {
result = result * number
power = power - 1
}
fmt.Println(result)
}
我想知道如何使用 math
库计算功率值?
我已经查看了大多数方法都是使用math
库实现的计算功率值的方法(即math.Pow
)。
例如,如果我们想计算3^2,我们可以像Python中的3**2
那样做,所以我很好奇是否可以像[=22]那样做类似的方法=] 通过数学符号在 Go 中计算它?
谢谢!
没有 Go 运算符(“数学符号”)可以执行此操作,但如果指数是常数,您当然可以只写 x*x
表示 x^2,或 x*x*x
表示 x^ 3.
如果指数不是常数而是整数,计算 n^exp 的一种简单方法是使用重复乘法,如下所示:
func pow(n float64, exp int) float64 {
if exp < 0 { // handle negative exponents
n = 1 / n
exp = -exp
}
result := 1.0
for i := 0; i < exp; i++ {
result *= n
}
return result
}
就是说,我不太确定您为什么要避免使用 math.Pow
-- 它在标准库中,速度更快,更通用。
如果数字是整数,那么这应该有效:
package main
import (
"fmt"
)
func main() {
number := 4
power := 5
result := 1
for power != 0 {
result = result * number
power = power - 1
}
fmt.Println(result)
}