From 129f4eaf64c035462f56e4b2daf6f93fb593f39a Mon Sep 17 00:00:00 2001 From: shaharck Date: Tue, 20 Feb 2018 12:29:23 -0800 Subject: [PATCH] round floats --- statsdaemon.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/statsdaemon.go b/statsdaemon.go index b0d8e4a..ba8511a 100644 --- a/statsdaemon.go +++ b/statsdaemon.go @@ -540,13 +540,13 @@ func parseLine(line []byte) *Packet { case "c": value, err = strconv.ParseInt(string(val), 10, 64) if err != nil { - //try to strip ".0" if being sent that way (overops send it like that :( ) - if (strings.HasSuffix(string(val), ".0")) { - value, err = strconv.ParseInt(strings.TrimSuffix(string(val),".0"), 10, 64) - } + //try to round a float + value, err = round(strconv.ParseFloat(string(val), 64)) if (err != nil) { - log.Printf("ERROR: failed to ParseInt %s - %s", string(val), err) + log.Printf("ERROR: failed to Parse %s - %s", string(val), err) return nil + } else { + value = round(value.(float64)) } } @@ -601,6 +601,11 @@ func parseLine(line []byte) *Packet { } } +func round(val float64) int { + if val < 0 { return int(val-0.5) } + return int(val+0.5) +} + func logParseFail(line []byte) { if *debug { log.Printf("ERROR: failed to parse line: %q\n", string(line))