Использование вещественных чисел в Golang может немного усложнить использование в программе математических операций. В том случае, когда нужна большая точность, то потребуется пакет math/big
. Далее будет дана инструкция для его использования.
Как совершать математические операции над числами float в Go?
1. Создайте файл main.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package main import ( "fmt" "math/big" ) const PI = `3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196` const diameter = 3.0 const precision = 400 func main() { pi, _ := new(big.Float).SetPrec(precision).SetString(PI) d := new(big.Float).SetPrec(precision).SetFloat64(diameter) circumference := new(big.Float).Mul(pi, d) pi64, _ := pi.Float64() fmt.Printf("Circumference big.Float = %.100f\n", circumference) fmt.Printf("Circumference float64 = %.100f\n", pi64*diameter) sum := new(big.Float).Add(pi, pi) fmt.Printf("Sum = %.100f\n", sum) diff := new(big.Float).Sub(pi, pi) fmt.Printf("Diff = %.100f\n", diff) quo := new(big.Float).Quo(pi, pi) fmt.Printf("Quocient = %.100f\n", quo) } |
2. Запустите код в терминале через go run main.go
;
3. Посмотрите на вывод:
Математические вычисления над Float в Golang
Пакет big
предоставляет поддержку математических манипуляций над вещественными числами с высокой точностью. В предыдущем примере проиллюстрированы операции над числами. Обратите внимание, что в коде сравниваются операции с типом float64 и типом big.Float.
При работе с числами, для высокой точности важно использовать тип big.Float
. Когда big.Float
конвертируется обратно во встроенный тип float64
, высокая точность утрачивается.
В пакете big
есть и другие операции над типом Float
. Для более подробной информации можете ознакомиться с документацией.
Сравнение и округление вещественных чисел были рассмотрены в темах Сравнение вещественных чисел float в Golang и Округление вещественных чисел float в Go.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»