The problem is that you try to parse "x.x\n", e.g: 1.8\n. And this returns an error: strconv.ParseFloat: parsing "1.8\n": invalid syntax. You can do a strings.TrimSpace function or to convert feet[:len(feet)-1] to delete \n character
With strings.TrimSpace() (you need to import strings package):
feetFloat, _ := strconv.ParseFloat(strings.TrimSpace(feet), 64)
Wtih feet[:len(feet)-1]:
feetFloat, _ := strconv.ParseFloat(feet[:len(feet)-1], 64)
Output in both cases:
10.8 feet converted to meters give you 3.2918400000000005 meters
Answer from Toni Villena on Stack OverflowThe problem is that you try to parse "x.x\n", e.g: 1.8\n. And this returns an error: strconv.ParseFloat: parsing "1.8\n": invalid syntax. You can do a strings.TrimSpace function or to convert feet[:len(feet)-1] to delete \n character
With strings.TrimSpace() (you need to import strings package):
feetFloat, _ := strconv.ParseFloat(strings.TrimSpace(feet), 64)
Wtih feet[:len(feet)-1]:
feetFloat, _ := strconv.ParseFloat(feet[:len(feet)-1], 64)
Output in both cases:
10.8 feet converted to meters give you 3.2918400000000005 meters
just tested this solution and also added one more feature:
func lbsToGrams(lbs float64) (grams float64) {
return lbs * conversionWeight
}
Find out more on my github here
strconv.ParseFloat() faster altrernatives
proposal: strconv: add ParseFloatPrefix
Float parser that sacrifices nothing: refloat
Hi, I have been working on a library & algorithm to parse floating point numbers. As the standard library has a large lookup table and sort of complicated internally. My approach itself doesn't require any lookup tables, yet it's actually a bit faster on most cases. It is also accurate, passing hundreds of millions of fuzz tests (although it's still far from 32bit, etc) in addition to strconv's tests. I wrote an article on this experiment, in both Japanese and English! The repo is here: https://github.com/sugawarayuuta/refloat I'd love to see comments/contributions from you! Thank you for reading.