golang float to int

Пользователь

от julian , в категории: Общие вопросы , 4 года назад

Как правильно преобразовывать переменные типа float в переменные типа integer? Покажите пожалуйста на примере кода и расскажите, какие методы для этого существуют.

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

6 ответов

Пользователь

от gracie , 4 года назад

Используйте функцию strconv.ParseFloat для анализа строки как числа с плавающей запятой с точностью, указанной в bitSize: 32 для float32 или 64 для float64.

Для примера:

func ParseFloat(s string, bitSize int) (float64, error)


Пользователь

от gracie , 4 года назад

Когда bitSize равен 32, результат все еще имеет тип float64, но он будет преобразован в float32 без изменения его значения.

f := "3.14159265"

if s, err := strconv.ParseFloat(f, 32); err == nil {

   fmt.Println(s) // 3.1415927410125732

}

if s, err := strconv.ParseFloat(f, 64); err == nil {

   fmt.Println(s) // 3.14159265

}


Пользователь

от julian , 4 года назад

Спасибо за подробный пример. Теперь сам попробую в компиляторе своими пальчиками написать подобный код. Надеюсь, он запустится без ошибок.


Пользователь

от brain.von , 4 года назад

Посмотри на голанг орг статью о конвертировании типов данных в Golang. Там расписаны вообще все случаи, не только float в integer. Плюс есть советы, как в будущем не допускать глупых ошибок.


Пользователь

от anthony , 4 года назад

Просто приведение к int усекает float, который, если ваша система внутренне представляет 2.0 как 1.9999999999, вы не получите то, что ожидаете. Различные преобразования printf имеют дело с этим и правильно округляют число при преобразовании. Таким образом, чтобы получить более точное значение, преобразование еще сложнее, чем вы могли бы сначала ожидать:

Пользователь

от julian , 4 года назад

Спасибо большое, ребят, попробовал многие методы из тех, которые вы скинули, и у меня всё получилось. Пойду дочитывать всё остальное и буду начинать писать свою небольшую, но очень интересную программку, в которой будут использоваться эти методы.