I was experimenting lately with golang's type system and encountered an interesting (or not) behaviour related to floats:

package main

import (
    "fmt"
)

func main() {
    doesntWork()
    works()
}

func doesntWork() {
    x := 1234
    y := x / 100000.0
    s := fmt.Sprintf("%.8f", y)
    fmt.Printf("%s
", s)
}

func works() {
    x := 1234
    y := float64(x) / 100000.0
    s := fmt.Sprintf("%.8f", y)
    fmt.Printf("%s
", s)
}
doesntWork()float32/64intfloat