# Golang : Compare floating-point numbers

It has been a while since I need to compare two float numbers. Golang's `math/big` package has function to compare floating-point numbers. Bear in mind that comparing float numbers can be tricky because most floating point numbers will end up imprecise due to rounding errors. What most people will do is to ignore the imprecision if it is small enough.

So, is the a way to compare two float numbers in Golang? Yes, see this example code :

`````` package main

import (
"fmt"
"math/big"
)

func main() {

// change these value and play around
float1 := 123.4568
float2 := 123.45678

// convert float to type math/big.Float
var bigFloat1 = big.NewFloat(float1)
var bigFloat2 = big.NewFloat(float2)

fmt.Printf("Big Float1 : %0.5f \n", bigFloat1)
fmt.Printf("Big Float2 : %0.5f \n", bigFloat2)

// compare bigFloat1 to bigFloat2
result := bigFloat1.Cmp(bigFloat2)

// -1 if x < y
if result < 0 {
fmt.Println("bigFloat 1 less than bigFloat2")
}

// 0 if x == y
if result == 0 {
fmt.Println("bigFloat 1 equals to bigFloat2")
}

// +1 if x > y
if result > 0 {
fmt.Println("bigFloat 1 more than bigFloat2")
}
}
``````

Output :

Big Float1 : 123.45680

Big Float2 : 123.45678

bigFloat 1 more than bigFloat2

Good to know, see http://floating-point-gui.de/errors/comparison/

Reference :

https://golang.org/pkg/math/big/#Float