Golang : Round float to precision example
Just an add on for my previous tutorial on how to round up or down a float number. For this short tutorial, we will learn how to round float numbers to certain precision.
Instead of using
fmt.Printf("%0.2f \n", f)
fmt.Printf("%0.2f \n", Round(f)) // round half
fmt.Printf("%0.2f \n", RoundUp(f, 2)) // change 2 to 5 will have no effect
fmt.Printf("%0.2f \n", RoundDown(f, 3)) // change 3 to 4 will have no effect
which will output the precision up to 2 decimal point no matter how you instruct the Round, RoundUp and RoundDown functions.
This is because of fmt.Printf(%0.2\n)
will always overrule the final display format.
To fix this problem or to display the precision properly, you will have to use fmt.Println()
instead.
var f float64 = 123.123456
fmt.Printf("%0.2f \n", f)
fmt.Println(Round(f)) // round half
fmt.Println(RoundUp(f, 4)) // up to precision 4
fmt.Println(RoundDown(f, 4)) // up to precision 4
Output :
123.12
123
123.1235
123.1234
Here's the full code :
package main
import (
"fmt"
"math"
)
func Round(input float64) float64 {
if input < 0 {
return math.Ceil(input - 0.5)
}
return math.Floor(input + 0.5)
}
func RoundUp(input float64, places int) (newVal float64) {
var round float64
pow := math.Pow(10, float64(places))
digit := pow * input
round = math.Ceil(digit)
newVal = round / pow
return
}
func RoundDown(input float64, places int) (newVal float64) {
var round float64
pow := math.Pow(10, float64(places))
digit := pow * input
round = math.Floor(digit)
newVal = round / pow
return
}
func main() {
var f float64 = 123.123456
fmt.Printf("%0.2f \n", f)
fmt.Println(Round(f)) // round half
fmt.Println(RoundUp(f, 4))
fmt.Println(RoundDown(f, 4))
}
Reference :
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
+17.7k Golang : Delete duplicate items from a slice/array
+4.5k Clean up Visual Studio For Mac installation failed disk full problem
+11.7k Android Studio : Password input and reveal password example
+30.1k Golang : Math pow(the power of x^y) example
+5.1k Golang : Get missing location after unmarshal binary and gob decode time.
+39.7k Golang : How to check if a string contains another sub-string?
+22.4k Golang : Use regular expression to validate domain name
+12.1k Golang : Read XML elements data with xml.CharData example
+11.7k Golang : http.Get example
+20.5k Golang : Setting up/configure AWS credentials with official aws-sdk-go
+13.6k Golang : Search folders for file recursively with wildcard support
+8.6k Javascript : Read/parse JSON data from HTTP response