Как преобразовать строку "210.0n" в число с плавающей точкой - PullRequest
0 голосов
/ 18 июня 2019

У меня есть строковое значение в следующем формате: «210.0n», и мне нужно сравнить его со значением «2.1e-07». Прямое сравнение, конечно, не получится.

Есть ли способ как преобразовать такие строки, как "210.0n", "0.7m", "10.0K" (с метрикой единиц) в обычные значения с плавающей точкой? Может быть, выделенный модуль Go доступен? Я не могу найти это.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Если этот ответ кому-нибудь поможет, то я нашел этот пакет на Github github.com / dustin / go-humanize , который содержит необходимый код для перевода таких строк, как "240n" "1p" и т. д. на поплавок. Он содержит еще больше возможностей для преобразования данных. Надеюсь, что это поможет некоторым новичкам, которые работают с поплавками в Go.

0 голосов
/ 19 июня 2019

Вы можете написать это в простом случае переключения самостоятельно.Нет необходимости в библиотеке.

    var str = "100k"

    mFloat, err := strconv.ParseFloat(str[:len(str)-1], 64)
    if err != nil{
        //handle error
    }

    switch string(str[len(str)-1]){
    case "k":
        mFloat = mFloat * 1000
        fmt.Printf("%e", )  
    case "m":
        mFloat = mFloat * 1000000
        fmt.Printf("%e", mFloat * 1000000)      
    // etc ....
    }   

    return mFloat

Различные суффиксы: https://www.mathsisfun.com/metric-numbers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...