Go语言编程快速入门:实数
P7 go06 - 实数
浮点型
如果有小数部分,那么就是 float64
var num = 10;
var float64 = 10;
go语言有2种类型
- float64
- 64位浮点类型
- 占用8个内存
- 某些语言把这种叫 double,双精度类型
- float32
- 占4字
- 比64位精度低
- 单精度
package main
import (
"fmt"
"math"
)
func main() {
var pi64 = math.Pi
var pi32 float32 = math.Pi
fmt.Println(pi64, pi32)
}
❯ go run float-32-64.go
3.141592653589793 3.1415927
使用场景
- 当大量数据的时候,如3d渲染,用 float32 是有意义的
- 但一般推荐使用 float64
显示符点型
package main
import "fmt"
func main() {
var thrid = 1.0 / 3
fmt.Println(thrid)
fmt.Printf("%v\n", thrid)
fmt.Printf("%4.2f\n", thrid)
}
❯ go run float-print.go
0.3333333333333333
0.3333333333333333
0.33
其它
- 同样存在
0.1 + 0.2
这个问题 - 建议用正常的库处理这个问题
- 先做乘法,再做除法,可以尽量减少这种问题的出现
解决思路
无限接近,我们就认为相等。
这个只是个临时解决办法。