关注“光谷码农”微信公众号,带你学习最新的Go2新特性!
Go语言有float32和float64两种浮点数类型,对应IEEE754标准的单精度和双精度的浮点数。
我们先看看浮点数的基本用法:
fmt.Println(0.5)
fmt.Println(5E-1) // 5 x 10^-1 = 0.5
fmt.Println(5)
fmt.Println(5E0) // 5 x 10^0 = 5
fmt.Println(50)
fmt.Println(5E1) // 5 x 10^1 = 50
我们可以用普通的格式输入浮点数,也可以通过科学记数法的方式输出浮点数。比如5E-1
表示5 x 10^-1
也就是0.5。
但是十进制的浮点数面值和计算机可以精确表示的浮点数可能有差异。比如:
fmt.Printf("%.20f", 0.3) // 0.29999999999999998890
这是因为Go语言的浮点数本质上是二进制的规范化的科学记数法(参考:Go之父说