# Golang : Display float in 2 decimal points and rounding up or down

We will cover 2 items for this tutorial.

First, we will learn how to display a float number in decimal points with the `fmt.Printf()` function. The `%0.2f` inside `fmt.Printf()` function tells Golang to display up to 2 decimal points. To increase the precision, simply adjust the number from `%0.2f` to `%0.#f`. # being the number of digits to display the after the decimal point.

Next, Golang math package lacks of functions to do rounding on float numbers. The code example below has 3 functions - one to do rounding, next for rounding up and another to do rounding down for a float value.

Here you go!

`````` 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.Printf("%0.2f \n", Round(f)) // round half

fmt.Printf("%0.2f \n", RoundUp(f, 2))

fmt.Printf("%0.2f \n", RoundDown(f, 2))

}
``````

NOTE : Change value of f to `-123.123456` and see how it goes.

Output :

123.12

123.00

123.13

123.12

References :

http://golang.org/pkg/math/#Ceil

http://golang.org/pkg/math/#Floor

https://gist.github.com/DavidVaini/10308388