Float

Go Float Data Types #

Float data types are used to store positive and negative numbers with a decimal point, such as 35.3, -2.34, or 3597.34987.

Go has two float data types:

TypeSizeRange
float3232 bits-3.4e+38 to 3.4e+38
float6464 bits-1.7e+308 to +1.7e+308

Tip: The default float type in Go is float64. If you do not specify a type, it will default to float64.

The float32 Keyword #

float32 stores decimal numbers with single precision.

package main
import ("fmt")

func main() {
  var x float32 = 123.78
  var y float32 = 3.4e+38

  fmt.Printf("Type: %T, value: %v\n", x, x)
  fmt.Printf("Type: %T, value: %v\n", y, y)
}

The float64 Keyword #

float64 stores decimal numbers with double precision and can hold larger numbers than float32.

package main
import ("fmt")

func main() {
  var x float64 = 1.7e+308
  fmt.Printf("Type: %T, value: %v\n", x, x)
}

Choosing the Right Float Type #

The float type you choose depends on the range of values your variable needs to store. Using a type with insufficient range will cause an error.

package main
import ("fmt")

func main() {
  var x float32 = 3.4e+39
  fmt.Println(x)
}

Result:

./prog.go:5:7: constant 3.4e+39 overflows float32

Always choose a float type that can safely hold the expected value range.