...

Source file src/github.com/dustin/go-humanize/ftoa.go

Documentation: github.com/dustin/go-humanize

     1  package humanize
     2  
     3  import (
     4  	"strconv"
     5  	"strings"
     6  )
     7  
     8  func stripTrailingZeros(s string) string {
     9  	if !strings.ContainsRune(s, '.') {
    10  		return s
    11  	}
    12  	offset := len(s) - 1
    13  	for offset > 0 {
    14  		if s[offset] == '.' {
    15  			offset--
    16  			break
    17  		}
    18  		if s[offset] != '0' {
    19  			break
    20  		}
    21  		offset--
    22  	}
    23  	return s[:offset+1]
    24  }
    25  
    26  func stripTrailingDigits(s string, digits int) string {
    27  	if i := strings.Index(s, "."); i >= 0 {
    28  		if digits <= 0 {
    29  			return s[:i]
    30  		}
    31  		i++
    32  		if i+digits >= len(s) {
    33  			return s
    34  		}
    35  		return s[:i+digits]
    36  	}
    37  	return s
    38  }
    39  
    40  // Ftoa converts a float to a string with no trailing zeros.
    41  func Ftoa(num float64) string {
    42  	return stripTrailingZeros(strconv.FormatFloat(num, 'f', 6, 64))
    43  }
    44  
    45  // FtoaWithDigits converts a float to a string but limits the resulting string
    46  // to the given number of decimal places, and no trailing zeros.
    47  func FtoaWithDigits(num float64, digits int) string {
    48  	return stripTrailingZeros(stripTrailingDigits(strconv.FormatFloat(num, 'f', 6, 64), digits))
    49  }
    50  

View as plain text