f32/floatutils.go
func Round(v float32, prec int) float32 {
	p := float32(prec)
	t := v * math32.Pow(10, p)
	if t > 0 {
		return math32.Floor(t+0.5) / math32.Pow(10, p)
	}
	return math32.Ceil(t-0.5) / math32.Pow(10, p)
}
func Round(v float32, prec int) float32 {
	p := float32(prec)
	t := v * math32.Pow(10, p)
	if t > 0 {
		return math32.Floor(t+0.5) / math32.Pow(10, p)
	}
	return math32.Ceil(t-0.5) / math32.Pow(10, p)
}
// Round shortens a float32 value to a specified precision (number of digits
// after the decimal point) with "round half up" tie-breaking rule. Half-way
// values (23.5) are always rounded up (24).