Float в Golang

16 марта 2026
Автор

Дмитрий Нечаев

В языке программирования Go (или Golang) тип данных float представляет собой один из основных типов для работы с числами с плавающей точкой. В этой статье мы рассмотрим, как использовать типы float32 и float64, а также их особенности и примеры применения.

Основные характеристики float

В Go типы данных с плавающей точкой представлены двумя вариантами:

  • float32 — число с плавающей точкой одинарной точности, занимает 32 бита.
  • float64 — число с плавающей точкой двойной точности, занимает 64 бита и является предпочтительным типом для большинства задач, так как обеспечивает большую точность.

float - один из основных числовых типов с плавающей точкой в Golang. Понимание его особенностей, точности и диапазонов значений важно для эффективной работы с числами с плавающей точкой в языке. Если вы хотите детальнее погрузиться в мир типов данных в Golang и освоить все тонкости их использования, приходите на наш курс Основы Golang. На курсе 193 уроков и 16 упражнений, AI-тренажеры для безлимитной практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.

Пример использования float

Давайте рассмотрим пример использования типа float64 в Go:

package main

import "fmt"

func main() {
    var a float64 = 10.5
    b := 20.3
    sum := a + b

    fmt.Println("Сумма:", sum)
}

В этом примере мы создаем две переменные a и b, обе из которых имеют тип float64. Переменная a объявляется явно с использованием ключевого слова var, а переменная b — с помощью сокращённой формы :=, что позволяет Go автоматически определить тип переменной как float64.

Операции с float

С типами float32 и float64 можно выполнять основные арифметические операции, такие как сложение, вычитание, умножение и деление:

package main

import "fmt"

func main() {
    a := 15.7
    b := 4.2

    fmt.Println("Сложение:", a + b)
    fmt.Println("Вычитание:", a - b)
    fmt.Println("Умножение:", a * b)
    fmt.Println("Деление:", a / b)
}

Результатом выполнения деления a / b будет дробное число, так как тип float поддерживает значения с плавающей точкой.

Точность и ошибки округления

При работе с типами float32 и float64 важно учитывать возможность ошибок округления, так как числа с плавающей точкой представляются с ограниченной точностью. Например:

package main

import "fmt"

func main() {
    a := 0.1
    b := 0.2
    sum := a + b

    fmt.Println("Сумма:", sum) // Ожидается 0.3, но может быть небольшое отклонение
}

Из-за особенностей представления чисел с плавающей точкой в памяти, результат может содержать небольшие отклонения от ожидаемого значения.

Работа с отрицательными числами

Типы float32 и float64 поддерживают работу с отрицательными значениями. Например:

package main

import "fmt"

func main() {
    a := -10.5
    b := 25.3
    result := a + b

    fmt.Println("Результат:", result)
}

Здесь переменная a имеет отрицательное значение, и результат сложения также корректно отображается.

Заключение

Типы float32 и float64 в Go предназначены для работы с числами с плавающей точкой. float64 является предпочтительным типом, так как обеспечивает большую точность. При работе с числами с плавающей точкой важно учитывать возможные ошибки округления и выбирать подходящий тип данных в зависимости от задачи.

Глубокое понимание числовых типов с плавающей точкой - это основа разработки на Golang. Чтобы писать эффективный и безопасный код, необходимо хорошо понимать, как работают различные типы данных с плавающей точкой и как их правильно использовать. Все необходимые знания вы найдете на курсе Основы Golang. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в Go прямо сегодня и станьте уверенным разработчиком.

Стрелочка влевоОбработка «not found» в GolangФлаги командной строки в Go (Golang)Стрелочка вправо

Постройте личный план изучения Golang до уровня Middle — бесплатно!

Golang — часть карты развития Backend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Golang

Работа с YAML в GolangПреобразование типов в GolangКонвертация структур в JSON в GolangStrconv в GolangИспользование пакета SQLx для работы с базами данных в GolangРазбираемся с SQL в GolangРазделение строк с помощью функции split в GolangПоиск и замена строк в Go - GolangSort в GoИспользование пакета reflect в GolangРабота с PostgreSQL в GoPointers в GolangПарсинг в GoПреобразование int в string в GolangРабота со списками (list) в GolangРабота с числами с плавающей точкой в GolangРабота с полями в GolangИспользование enum в GolangОбработка JSON в GoЧтение и запись CSV-файлов в GolangРабота с cookie в GolangРегистры в GoКэширование данных в GolangПреобразование byte в string в GolangByte в GoИспользование bufio для работы с потоками данных в GolangДобавление данных и элементов (add) в Go
Логирование в Golang. Zap, Logrus, Loki, GrafanaРабота с Docker-контейнерами в GoИспользование pprof в GolangМеханизмы синхронизации в GolangРабота с пакетом S3 в GolangМониторинг Golang приложений с помощью PrometheusОптимизация проектов на GoПаттерны проектирования в GolangТрейсинг запросов с OpenTelemetry в GoНастройка шины событий NATS NSQ в GoМиграции базы данных в GolangНастройка уровней логирования log levels в GoОркестрация контейнеров Go с Kubernetes + DockerGjGo Playground и компилятор GolangИспользование go mod init для создания модулей GolangРабота с переменными окружения (env) в GolangКоманда go build в GolangАвтоматизация Golang проектов — CI/CD с GitLab CI и JenkinsРуководство по embed в GoОтладка кода в GolangЧтение и использование конфигурации в приложениях на GolangКомпиляция в GolangРабота с пакетом Amazon S3 в GolangКак развернуть Go-приложение на облаке AWSАутентификация в Golang
Сетевые протоколы в GoПеременные в GolangЗначения в GolangДженерик %T и его применение в GolangТипы данных в GolangИспользование tls в GolangИспользование tag в структурах GolangSwitch в GoСтроки в GolangРабота с потоками (stream) в GolangSelect в GoРуны в GoРабота с пакетом params в GolangКонвертация строк в числа в GolangNull, Nil, None, 0 в GoНаименования переменных, функций и структур в GoInt в GolangУстановка GolangЧтение и установка HTTP заголовков в GolangMethods в GolangGoLand — IDE для разработки на Golang от JetBrainsОбработка «not found» в GolangFloat в GolangФлаги командной строки в Go (Golang)Запуск внешних команд в GolangОбработка ошибок в GoИспользование defer в GolangЗначения default в GolangГенерация кода в GoФорматирование кода в GolangЧистая архитектура в GolangКаналы (channels) в GolangПолучение body из HTTP запроса в Golang
Открыть базу знаний

Лучшие курсы по теме

изображение курса

Основы Golang

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Nest.js с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.6
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Docker и Ansible

Антон Ларичев
AI-тренажеры
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий