Найти тему

005 Тип данных float32 и float64

В языке 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() для проверки, является ли значение конечным числом.