Go 語(yǔ)言的浮點(diǎn)型(float)
前面兩個(gè)小節(jié)我們我們都是在講解整型的數(shù)據(jù)類型,也就是說(shuō)都是整數(shù),但是在開(kāi)發(fā)中我們也會(huì)經(jīng)常使用小數(shù)數(shù)據(jù),這節(jié)課我們就主要介紹 Go 語(yǔ)言中處理小數(shù)的數(shù)據(jù)類型
1. 實(shí)數(shù)類型
Go 語(yǔ)言提供了兩種精度的浮點(diǎn)數(shù)?float32?和?float64,它們的算術(shù)規(guī)范由 IEEE754 浮點(diǎn)數(shù)國(guó)際標(biāo)準(zhǔn)定義,該浮點(diǎn)數(shù)規(guī)范被所有現(xiàn)代的 CPU 支持。
序號(hào) | 類型 | 長(zhǎng)度 |
---|---|---|
1 | float32 | 1.401298464324817e-45~3.4028234663852886e+38 |
2 | float64 | 5e-324~1.7976931348623157e+308 |
2. 復(fù)數(shù)類型
序號(hào) | 類型 | 長(zhǎng)度 |
---|---|---|
1 | complex64 | 實(shí)部和虛部都是一個(gè)float32 |
2 | complex128 | 實(shí)部和虛部都是一個(gè)float64 |
3. 使用示例
通過(guò)幾個(gè)示例加深對(duì)這幾個(gè)數(shù)據(jù)類型的理解。
3.1 實(shí)數(shù)類型示例
在 Go 語(yǔ)言中小數(shù)值類型取決于計(jì)算機(jī)操作系統(tǒng)的位數(shù),我是使用的 64位 的計(jì)算機(jī),所以使用:=
時(shí),會(huì)得到一個(gè)類型為?float64 的變量
代碼塊
- 1 ?
package main
- 2
- 3?
import (
- 4? ? ? ?
"fmt"
- 5?
)
- 6
- 7
func main() {
- 8? ? ? ?
var a float32
- 9? ? ? ?
a = 1.2
- 10? ? ?
fmt.Println("a = ", a) // 此處的結(jié)果
- 11
- 12? ? ?
//自動(dòng)推導(dǎo)類型
- 13? ? ?
b := 1.2
- 14? ? ?
fmt.Printf("b type is %Tn", b)
- 15? ? ?
fmt.Println("b = ", b)
- 16?
}
輸出結(jié)果:

3.2 復(fù)數(shù)類型示例
在 Go 語(yǔ)言中復(fù)數(shù)值類型取決于計(jì)算機(jī)操作系統(tǒng)的位數(shù),我是使用的 64 位的計(jì)算機(jī),所以使用:=
時(shí),會(huì)得到一個(gè)類型為?complex128 的變量
代碼塊
- 1?
package main
- 2
- 3?
import (
- 4? ? ? ?
"fmt"
- 5?
)
- 6
- 7?
func main() {
- 8? ? ? ?
var a complex64
- 9? ? ? ?
a = 1.2 + 2.22i
- 10? ? ?
fmt.Println("a = ", a) // 此處的結(jié)果
- 11
- 12? ? ?
//自動(dòng)推導(dǎo)類型
- 13? ? ?
b := 1.2 + 3.45i
- 14? ? ?
fmt.Printf("b type is %Tn", b)
- 15? ? ?
fmt.Println("b = ", b)
- 16
- 17? ? ?
//通過(guò)內(nèi)建函數(shù)取實(shí)部和虛部
- 18? ? ?
fmt.Println("real(b) = ", real(b), " , imag(b) = ", imag(b))
- 19?
}
輸出結(jié)果:

4. 小結(jié)
本文主要學(xué)習(xí)了 Go 語(yǔ)言中的浮點(diǎn)型的使用,注意高精度向低精度轉(zhuǎn)失真的風(fēng)險(xiǎn)。
文章來(lái)源于網(wǎng)絡(luò),侵刪!