Hi there! Today is the day 2 challenge. The goal is to compute the total cost of a meal given the meal price, tip percent and tax percent. Usually when I go to a restaurant in Brazil I only care about the first two, as taxes are already included in the meal price. Again: this is pretty basic, but as I am used to other languages syntax this simple tutorial from HackerRank is being quite useful to keep me training everyday and learn Go, so it is awesome! Now, let’s see my solution:

``````package main

import (
"fmt"
"math"
)

// Round to nearest integer
func Round(f float64) uint32 {
up := math.Floor(f)
down := math.Ceil(f)
if math.Abs(f-up) < math.Abs(f-down) {
return uint32(up)
}
return uint32(down)
}

func main() {
mealCost := 0.0
tipPercent := 0.0
taxPercent := 0.0

// and separated by new lines
//I have never tried this in C,
//but I think it probably works
fmt.Scanf("%v\n%v\n%v\n", &mealCost,
&tipPercent, &taxPercent)

// Answer is the total cost rounded
// to the nearest dollar
totalCost := Round(mealCost *
(1.0 + (tipPercent+taxPercent)/100.0))
fmt.Printf("The total meal cost
is %v dollars.\n", totalCost)
}

``````

Today I didn’t find a round function in the `math` package. I don’t know if Google is going to implement it, but I had this custom implementation to get the meal cost to the nearest dollar. I forgot about `Scanf` and tried `Scanln` first with the same arguments, but of course it didn’t work and that’s why my solution uses `Scanf`.

That’s all for day 2. Thanks for reading!