c語言開根號運算符,golang2021數...
267
2023-09-01
除了整型和浮點型之外,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 作為計算類型,因為相關函數都使用這個類型的參數
?
發表評論
暫時沒有評論,來搶沙發吧~