Go语言编程快速入门:实数

P7 go06 - 实数
更新于: 2022-01-15 10:26:36

浮点型

如果有小数部分,那么就是 float64

var num = 10;
var float64 = 10;

go语言有2种类型

  1. float64
    1. 64位浮点类型
    2. 占用8个内存
    3. 某些语言把这种叫 double,双精度类型
  2. float32
    1. 占4字
    2. 比64位精度低
    3. 单精度
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

其它

  1. 同样存在 0.1 + 0.2 这个问题
  2. 建议用正常的库处理这个问题
  3. 先做乘法,再做除法,可以尽量减少这种问题的出现 
解决比较问题

解决思路

无限接近,我们就认为相等。

这个只是个临时解决办法

参考