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 :
See also : Golang : Round float to precision example
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+13.9k Elastic Search : Mapping date format and sort by date
+8.5k Golang : Gaussian blur on image and camera video feed examples
+15.7k Golang : Generate universally unique identifier(UUID) example
+4.8k Golang : Constant and variable names in native language
+35.8k Golang : How to split or chunking a file to smaller pieces?
+10.2k Swift : Convert (cast) String to Integer
+10.5k Golang : Get currencies exchange rates example
+12k Golang : Get month name from date example
+22.4k Golang : simulate tail -f or read last line from log file example
+9.6k Golang : Ordinal and Ordinalize a given number to the English ordinal numeral
+6.1k Unix/Linux : Use netstat to find out IP addresses served by your website server
+7.9k Golang : Auto-generate reply email with text/template package