diff --git a/thousands.go b/thousands.go index 81ca405..88a4c8b 100644 --- a/thousands.go +++ b/thousands.go @@ -4,15 +4,15 @@ import ( "fmt" language2 "golang.org/x/text/language" "golang.org/x/text/message" + "strconv" ) -func Separate(Number interface{}, language ...string) (string, error) { +func Separate(Number interface{}, language ...string) (float64, error) { lang := map[string]string{"de": "German", "en": "English"} useLang := lang[language[0]] p := message.NewPrinter(language2.Make(useLang)) - formattedNumber := "" switch n := Number.(type) { case int: @@ -24,88 +24,14 @@ func Separate(Number interface{}, language ...string) (string, error) { case float64: default: - return "", fmt.Errorf("%T is no valid number format", n) + return 0, fmt.Errorf("%T is no valid number format", n) } - formattedNumber = p.Sprintf("%f", Number) + formattedNumber, err := strconv.Atoi(p.Sprintf("%d", Number)) - /** - - formattedNumber := fmt.Sprintf("%.2f", Number) - - if len(language) < 1 { - language[0] = "en" + if err != nil { + return 0, err } - switch language[0] { - case "de": - - formattedNumber = strings.ReplaceAll(formattedNumber, ",", ".") - - dec := "" - - if strings.Index(formattedNumber, ".") != -1 { - dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : len(formattedNumber)] - formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")] - - } - - for i := 0; i <= len(formattedNumber); i = i + 4 { - - a := formattedNumber[0 : len(formattedNumber)-i] - b := formattedNumber[len(formattedNumber)-i : len(formattedNumber)] - formattedNumber = a + "." + b - - } - - if formattedNumber[0:1] == "." { - formattedNumber = formattedNumber[1:len(formattedNumber)] - } - - if formattedNumber[len(formattedNumber)-1:len(formattedNumber)] == "." { - formattedNumber = formattedNumber[0 : len(formattedNumber)-1] - } - - if dec != "" { - formattedNumber = formattedNumber + "," + dec - } - - return formattedNumber, nil - - case "en": - - formattedNumber = strings.ReplaceAll(formattedNumber, ",", "") - - dec := "" - - if strings.Index(formattedNumber, ".") != -1 { - dec = formattedNumber[strings.Index(formattedNumber, ".")+1 : len(formattedNumber)] - formattedNumber = formattedNumber[0:strings.Index(formattedNumber, ".")] - - } - - for i := 0; i <= len(formattedNumber); i = i + 4 { - - a := formattedNumber[0 : len(formattedNumber)-i] - b := formattedNumber[len(formattedNumber)-i : len(formattedNumber)] - formattedNumber = a + "," + b - - } - - if formattedNumber[0:1] == "," { - formattedNumber = formattedNumber[1:len(formattedNumber)] - } - - if formattedNumber[len(formattedNumber)-1:len(formattedNumber)] == "," { - formattedNumber = formattedNumber[0 : len(formattedNumber)-1] - } - - if dec != "" { - formattedNumber = formattedNumber + "." + dec - } - - return formattedNumber, nil - } - */ - return formattedNumber, nil + return float64(formattedNumber), nil }