package main
import (
"fmt"
"strings"
"strconv"
)
func toFloat(input string) float64 {
commaCount := strings.Count(input, ",")
dotCount := strings.Count(input, ".")
lastComma := strings.LastIndex(input, ",")
lastDot := strings.LastIndex(input, ".")
str := input
if commaCount > 0 && dotCount > 0 {
if lastComma > lastDot {
str = strings.ReplaceAll(str, ".", "")
str = strings.ReplaceAll(str, ",", ".")
} else {
str = strings.ReplaceAll(str, ",", "")
}
} else if commaCount > 0 {
str = strings.ReplaceAll(str, ".", "")
str = strings.ReplaceAll(str, ",", ".")
} else {
str = strings.ReplaceAll(str, ",", "")
}
result, err := strconv.ParseFloat(str, 64)
if err != nil {
panic(fmt.Sprintf("Invalid number format: %s", input))
}
return result
}
func main() {
fmt.Printf("%.3f\n", toFloat("1,224,533.533"))
fmt.Printf("%.3f\n", toFloat("1.224.533,533"))
fmt.Printf("%.2f\n", toFloat("2.354,67"))
fmt.Printf("%.2f\n", toFloat("2,354.67"))
}
/*
run:
1224533.533
1224533.533
2354.67
2354.67
*/