Go 语言中提供了两种精度浮点型 float32 和 float64。这两种浮点型数据格式遵循 IEEE754 浮点数国际标准,该浮点数规范被所有现代的CPU支持。
浮点型 Float32
    float32,即我们常说的单精度,存储占用4个字节,也即4*8=32位,其中1位用来符号,8位用来指数,剩下的23位表示尾数:
浮点型 Float64
    float64, 即我们熟悉的双精度,存储占用8个字节,也即8*8=64位,其中1位用来符号,11位用来指数,剩下的52位表示尾数
浮点数精度
    float32 的浮点数最大值约为 3.4e38, 可以通过 match包的方法来获取: match.MaxFloat32。
    float64 的浮点数最大值约为 1.8e308, 可以通过 match包的方法来获取: match.MaxFloat64。
它们分别能表示的最小值近似为1.4e-45和4.9e-324。
一个float32类型的浮点数可以提供大约6个十进制数的精度,而float64则可以提供约15个十进制数的精度;通常应该优先使用float64类型,因为float32类型的累计计算误差很容易扩散,并且float32能精确表示的正整数并不是很大(注意:因为float32的有效bit位只有23个,其它的bit位用于指数和符号;当整数大于23bit能表达的范围时,float32的表示将出现误差):
var f float32 = 16777216 // 1 << 24
fmt.Println(f == f+1)    // "true"! 
浮点数的字面值可以直接写小数部分,如下所示:
const e = 2.71828 
小数点前面或后面的数字都可能被省略(例如.707或1.)。很小或很大的数最好用科学计数法书写,通过e或E来指定指数部分:
const Avogadro = 6.02214129e23  // 阿伏伽德罗常数
const Planck   = 6.62606957e-34 // 普朗克常数 
打印浮点数
通过 Printf 函数打印浮点数时, 可以使用“%f”来控制保留几位小数, 代码如下:
package main
import (
    "fmt"
    "math"
)
func main()  {
    // 打印默认宽度和精度的圆周率, \n 为换行符 
    fmt.Printf("%f\n", math.Pi)
    // 打印默认宽度, 精度(小数点后的位数)为2的圆周率
    fmt.Printf("%.2f\n", math.Pi)
} 
运行结果如下:
3.141593
3.14