summaryrefslogtreecommitdiff
path: root/ftoa.go
diff options
context:
space:
mode:
Diffstat (limited to 'ftoa.go')
-rw-r--r--ftoa.go25
1 files changed, 24 insertions, 1 deletions
diff --git a/ftoa.go b/ftoa.go
index c76190b..1c62b64 100644
--- a/ftoa.go
+++ b/ftoa.go
@@ -1,6 +1,9 @@
package humanize
-import "strconv"
+import (
+ "strconv"
+ "strings"
+)
func stripTrailingZeros(s string) string {
offset := len(s) - 1
@@ -17,7 +20,27 @@ func stripTrailingZeros(s string) string {
return s[:offset+1]
}
+func stripTrailingDigits(s string, digits int) string {
+ if i := strings.Index(s, "."); i >= 0 {
+ if digits <= 0 {
+ return s[:i]
+ }
+ i++
+ if i+digits >= len(s) {
+ return s
+ }
+ return s[:i+digits]
+ }
+ return s
+}
+
// Ftoa converts a float to a string with no trailing zeros.
func Ftoa(num float64) string {
return stripTrailingZeros(strconv.FormatFloat(num, 'f', 6, 64))
}
+
+// FtoaWithDigits converts a float to a string but limits the resulting string
+// to the given number of decimal places, and no trailing zeros.
+func FtoaWithDigits(num float64, digits int) string {
+ return stripTrailingZeros(stripTrailingDigits(strconv.FormatFloat(num, 'f', 6, 64), digits))
+}