В языке Go float32 и float64 - это два типа данных с плавающей точкой, которые представляют числа с одинарной и двойной точностью соответственно.
float32 - это 32-битное число с плавающей точкой, которое имеет точность от 6 до 9 десятичных цифр и может хранить числа в диапазоне от -3,4 x 10^38 до +3,4 x 10^38.
float64 - 64-битное число с плавающей точкой, которое имеет точность от 15 до 17 десятичных цифр и может хранить числа в диапазоне от -1,8 x 10^308 до +1,8 x 10^308.
Они могут быть объявлены и инициализированы следующим образом:
var myVar32 float32 = 3.14
var myVar64 float64 = 3.14
или
myVar32 := float32(3.14)
myVar64 := float64(3.14)
Также можно выполнять различные операции над значениями float32 и float64, такие как арифметические операции, сравнение, преобразование в другие числовые типы и обратно.
Вы также можете использовать функции пакета math для переменных типа float32 и float64.
Всегда важно помнить, что числа с плавающей точкой не являются точными, и при выполнении арифметических операций могут возникать ошибки округления. Это может привести к неожиданным результатам при сравнении значений с плавающей точкой на равенство. В будущем, после изучения пакетов, рекомендуется использовать значение допуска или функцию math.Fdim для сравнения чисел с плавающей точкой на равенство, а не оператор ==.
Еще один важный момент: типы float32 и float64 имеют специальное значение NaN (not-a-number), которое представляет собой результат неопределенной или непредставимой операции. Важно правильно обрабатывать значения NaN при работе с этими типами, иначе это приведет к неожиданным результатам вычислений.
Для ботаников:
В этом примере (https://go.dev/play/p/rixLx3axfxo) x устанавливается в NaN с помощью функции math.NaN(). Затем используется функция math.IsNaN(x), чтобы проверить, является ли x значением NaN. В данном случае проверка возвращает true, и программа печатает "x is NaN".
Далее над x выполняется операция, результат которой сохраняется в y. Затем с помощью функции math.IsNaN(y) проверяется, является ли y NaN. В данном случае, поскольку x - NaN, операция над x вернет NaN, и проверка возвращает true, а программа печатает "результат операции - NaN".
Важно отметить, что при выполнении любой операции над значением NaN результат также будет NaN, а любая операция сравнения над значением NaN вернет false, за исключением сравнения с другим значением NaN.
Также вы можете использовать функцию math.IsNaN(), чтобы проверить, является ли переменная float значением NaN или нет.
Помимо math.IsNaN(), в пакете math есть и другие функции, которые можно использовать для проверки специальных значений с плавающей точкой, например, math.IsInf() для проверки бесконечности и math.IsFinite() для проверки, является ли значение конечным числом.