Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert an integer to a float number

Tags:

go

There is no float type. Looks like you want float64. You could also use float32 if you only need a single-precision floating point value.

package main

import "fmt"

func main() {
    i := 5
    f := float64(i)
    fmt.Printf("f is %f\n", f)
}

Just for the sake of completeness, here is a link to the golang documentation which describes all types. In your case it is numeric types:

uint8       the set of all unsigned  8-bit integers (0 to 255)
uint16      the set of all unsigned 16-bit integers (0 to 65535)
uint32      the set of all unsigned 32-bit integers (0 to 4294967295)
uint64      the set of all unsigned 64-bit integers (0 to 18446744073709551615)

int8        the set of all signed  8-bit integers (-128 to 127)
int16       the set of all signed 16-bit integers (-32768 to 32767)
int32       the set of all signed 32-bit integers (-2147483648 to 2147483647)
int64       the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)

float32     the set of all IEEE-754 32-bit floating-point numbers
float64     the set of all IEEE-754 64-bit floating-point numbers

complex64   the set of all complex numbers with float32 real and imaginary parts
complex128  the set of all complex numbers with float64 real and imaginary parts

byte        alias for uint8
rune        alias for int32

Which means that you need to use float64(integer_value).


intutils.ToFloat32

// ToFloat32 converts a int num to a float32 num
func ToFloat32(in int) float32 {
    return float32(in)
}

// ToFloat64 converts a int num to a float64 num
func ToFloat64(in int) float64 {
    return float64(in)
}

Proper parentheses placement is key:

package main

import (
    "fmt"
)

func main() {

    var payload uint32
    var fpayload float32
    payload = 1320
    
    // works
    fpayload = float32(payload) / 100.0
    fmt.Printf("%T = %d, %T = %f\n", payload, payload, fpayload, fpayload)
    
    // doesn't work
    fpayload = float32(payload / 100.0)
    fmt.Printf("%T = %d, %T = %f\n", payload, payload, fpayload, fpayload)
}

results:

uint32 = 1320, float32 = 13.200000

uint32 = 1320, float32 = 13.000000

The Go Playground