Go语言复数类型
复数类型用于表示数学中的复数,如 1+2j、1-2j、-1-2j 等。复数实际上由两个实数(在计算机中用浮点数表示)构成,一个表示实部(real),一个表示虚部(imag),如果了解了数学上的复数是怎么回事,那么对于Go语言中的复数就非常容易理解了。
Go语言中有两种复数类型,如下表所示。
可以通过Go语言内置的 complex() 函数构建复数,并通过内置的 real() 和 imag() 函数分别返回复数的实部和虚部,示例代码如下所示:
另外,复数支持和其它数字类型一样的运算。当你使用等号 == 或者不等号 != 对复数进行比较运算时,注意对精确度的把握。cmath 包中包含了一些操作复数的公共方法。如果你对内存的要求不是特别高,最好使用 complex128 作为计算类型,因为相关函数都使用这个类型的参数。
声明:《Go系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
Go语言中有两种复数类型,如下表所示。
类型 | 字节数 | 说明 |
---|---|---|
complex64 | 8 | 64位的复数型,由float32类型的实部和部联合表示 |
complex128 | 16 | 128位的复数型,由float64类型的实部和虚部联合表示 |
可以通过Go语言内置的 complex() 函数构建复数,并通过内置的 real() 和 imag() 函数分别返回复数的实部和虚部,示例代码如下所示:
package main import ( "fmt" ) func main() { var x complex128 = complex(1, 2) //1+2i var y complex128 = complex(3, 4) //3+4i fmt.Println(x * y) //(-5+10i) fmt.Println(real(x * y)) //-5 fmt.Println(imag(x * y)) //10 }运行结果如下:
(-5+10i)
-5
10
fmt.Println(1i*1i) // (-1+0i) ,i^2=-1
如果 re 和im的类型均为 float32,那么类型为 complex64 的复数 c 可以通过以下方式来获得:c = complex(re, im)
函数 real(c) 和 imag(c) 可以分别获得相应的实数和虚数部分。另外,复数支持和其它数字类型一样的运算。当你使用等号 == 或者不等号 != 对复数进行比较运算时,注意对精确度的把握。cmath 包中包含了一些操作复数的公共方法。如果你对内存的要求不是特别高,最好使用 complex128 作为计算类型,因为相关函数都使用这个类型的参数。
声明:《Go系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。