package mathx

import "math"

// Round rounds the "input" on "roundOn" (e.g. 0.5) on "places" digits.
func Round(input float64, roundOn float64, places float64) float64 {
	pow := math.Pow(10, places)
	digit := pow * input

	_, div := math.Modf(digit)
	if div >= roundOn {
		return math.Ceil(digit) / pow
	}

	return math.Floor(digit) / pow
}

// RoundUp rounds up the "input" up to "places" digits.
func RoundUp(input float64, places float64) float64 {
	pow := math.Pow(10, places)
	return math.Ceil(pow*input) / pow
}

// RoundDown rounds down the "input" up to "places" digits.
func RoundDown(input float64, places float64) float64 {
	pow := math.Pow(10, places)
	return math.Floor(pow*input) / pow
}