c语言开根号运算符,golang2021数据类型(13)复数类型

抖帅宫 225 2023-09-01

c语言开根号运算符,golang2021数据类型(13)复数类型-第1张-观点-玄机派

来源头条作者:清华编程学神尹成

除了整型和浮点型之外,Go 语言还支持复数类型,与复数相对,我们可以把整型和浮点型这种日常比较常见的数字称为实数,复数是实数的延伸,可以通过两个实数(在计算机中用浮点数表示)构成,一个表示实部(real),一个表示虚部(imag),常见的表达形式如下:

z = a + bi

其中 a、b 均为实数,i 称为虚数单位,当 b = 0 时,z 就是常见的实数,当 a = 0 而 b ≠ 0 时,将 z 称之为纯虚数,如果你理解数学概念中的复数概念,这些都很好理解,下面我们来看下复数在 Go 语言中的表示和使用。

在 Go 语言中,复数支持两种类型:complex64(32 位实部和虚部) 和 complex128(64 位实部与虚部),对应的表示示例如下,和数学概念中的复数表示形式一致:

var complexValue1 complex64

complexValue1 = 1.10 + 10i // 由两个 float32 实数构成的复数类型

complexValue2 := 1.10 + 10i // 和浮点型一样,默认自动推导的实数类型是 float64,所以 complexValue2 是 complex128 类型

complexValue3 := complex(1.10, 10) // 与 complexValue2 等价

对于一个复数 z = complex(x, y),就可以通过 Go 语言内置函数 real(z) 获得该复数的实部,也就是 x,通过 imag(z) 获得该复数的虚部,也就是 y。

复数支持和其它数字类型一样的算术运算符。当你使用 == 或者 != 对复数进行比较运算时,由于构成复数的实数部分也是浮点型,需要注意对精度的把握。

更多关于复数的函数,请查阅 math/cmplx 标准库的文档。如果你对内存的要求不是特别高,最好使用 complex128 作为计算类型,因为相关函数大都使用这个类型的参数。

复数类型用于表示数学中的复数,如 1+2j、1-2j、-1-2j 等。复数实际上由两个实数(在计算机中用浮点数表示)构成,一个表示实部(real),一个表示虚部(imag),如果了解了数学上的复数是怎么回事,那么对于Go语言中的复数就非常容易理解了。

 

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

复数使用 re+imI 来表示,其中 re 代表实数部分,im 代表虚数部分,I 代表根号负 1。如果一个浮点数面值或一个十进制整数面值后面跟着一个 i,例如 3.141592i 或 2i,它将构成一个复数的虚部,复数的实部是 0:

fmt.Println(1i*1i)   // (-1+0i) ,i^2=-1

如果 re 和im的类型均为 float32,那么类型为 complex64 的复数 c 可以通过以下方式来获得:

c = complex(re, im)

函数 real(c) 和 imag(c) 可以分别获得相应的实数和虚数部分。

 

另外,复数支持和其它数字类型一样的运算。当你使用等号 == 或者不等号 != 对复数进行比较运算时,注意对精确度的把握。cmath 包中包含了一些操作复数的公共方法。如果你对内存的要求不是特别高,最好使用 complex128 作为计算类型,因为相关函数都使用这个类型的参数

 

上一篇:学易经的坏处(学易经会对自己有影响吗)
下一篇:中国有几个经济特区,中国经济实力最强的100座城市7座城市超2万亿
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

返回顶部小火箭