Golang | Is it possible to calculate a power value without using math library?

huangapple go评论78阅读模式
英文:

Golang | Is it possible to calculate a power value without using math library?

问题

我想知道如何在不使用 math 库的情况下计算一个幂值。

我已经查看了计算幂值的方法,大多数方法都使用 math 库来实现(例如 math.Pow)。

例如,如果我们想计算 3 的 2 次方,我们可以在 Python 中使用 3**2 的方式,所以我很好奇是否可以通过数学符号在 Go 中进行类似的计算。

谢谢!

英文:

I am wondering how can we calculate a power value withing using math library?

I have checked the method for calculating a power value that most of the ways are using the math library to achieve (i.e., math.Pow).

For example, if we wanna calculate 3^2, we can do the way like 3**2 in Python, so I am curious is it possible to do a similar way like Python via math symbols to calculate it in Go?

Thank you!

答案1

得分: 2

没有Go运算符("数学符号")可以实现这个,但是如果指数是常数,你当然可以直接写x*x表示x的平方,或者x*x*x表示x的立方。

如果指数不是常数但是是整数,计算n^exp的一个简单方法是使用重复乘法,类似这样:

func pow(n float64, exp int) float64 {
	if exp < 0 { // 处理负指数
		n = 1 / n
		exp = -exp
	}
	result := 1.0
	for i := 0; i < exp; i++ {
		result *= n
	}
	return result
}

话虽如此,我不太确定为什么你要避免使用math.Pow -- 它在标准库中,而且更快且更通用。

英文:

There's no Go operator ("math symbols") to do this, though if the exponent is constant you could of course just write x*x for x^2, or x*x*x for x^3.

If the exponent is not constant but is an integer, a simple way to calculate n^exp is to use repeated multiplication, something like this:

func pow(n float64, exp int) float64 {
	if exp &lt; 0 { // handle negative exponents
		n = 1 / n
		exp = -exp
	}
	result := 1.0
	for i := 0; i &lt; exp; i++ {
		result *= n
	}
	return result
}

That said, I'm not exactly sure why you'd want to avoid math.Pow -- it's in the standard library and it's faster and more general.

答案2

得分: 0

如果数字是整数,那么这段代码应该可以工作:

package main

import (
	"fmt"
)

func main() {
	number := 4
	power := 5
	result := 1

	for power != 0 {
		result = result * number
		power = power - 1
	}
	fmt.Println(result)
}

英文:

If the numbers are integer, then this should work:

package main

import (
	&quot;fmt&quot;
)

func main() {
	number := 4
	power := 5
	result := 1

	for power != 0 {
		result = result * number
		power = power - 1
	}
	fmt.Println(result)
}

huangapple
  • 本文由 发表于 2022年6月2日 10:45:32
  • 转载请务必保留本文链接:https://go.coder-hub.com/72470089.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定