Помнишь математику?) Go #8. Математические операции в Go, Golang, Go курс, Go уроки. Math in Go

preview_player
Показать описание
ПОДДЕРЖИ выпуск видео на канале 😊 (КАЖДОМУ скажу спасибо в сообществе!)

Поддержать меня через PAYEER(номер счёта) - P1073625154 👍

Если нет возможности через PayPal или Payeer, то через криптовалюту 👌

Номера крипто-кошельков: 😁
BTC - bc1q2ygvmaszq9k82f72ezt8klte2axutpmfsqk6pk 🪙
ETH - 0x9aC2Ea60d78012dEE883B3752363b1ebC6243987 💸
SOL - A66WYJLQLubzdj7hTW5nnYZ2LCDjGs7coHqC8Ze9QeRu ✨
Polygon - 0x9aC2Ea60d78012dEE883B3752363b1ebC6243987 🔥

✔ Привет)

Сегодня изучим математические операции и функции встроенной библиотеки math в Golang!
Математические операции это важная часть любого языка программирования, которая важна как в маленьких, так и в больших(особенно финансовых) проектах!

- - - ССЫЛКИ - - -

И конечно обязательно ставь лайк, подписывайся на канал и пиши своё мнение в комментариях)
Рекомендации по теме
Комментарии
Автор

Код программы)

package main

import (
"fmt"
)

func main() {
fmt.Println("Дебильный калькулятор")
fmt.Println("Какое действие вы хотите выполнить? (+, -, *, /, %)")

var action string
fmt.Scan(&action)

var a float64
var b float64

fmt.Println("Введите первое число: ")
fmt.Scan(&a)

fmt.Println("Введите второе число: ")
fmt.Scan(&b)

switch {
case action == "+":
fmt.Println("Сума чисел = " + fmt.Sprint(a+b))

case action == "-":
fmt.Println("a - b = " + fmt.Sprint(a-b))

case action == "*":
fmt.Println("a * b = " + fmt.Sprint(a*b))

case action == "/":
fmt.Println("a / b = " + fmt.Sprint(a/b))
}
}

BRO-IT
Автор

Супер, только вот с float можно было не создавать var..., а просто сделать: 8 := 5.0 (в конце добавить дробную часть)

Tim-xe
Автор

Спасибо за уроки. хотелось бы еще продвинутый уровень... Я так вывел:

a := 145
result := math.Sqrt(float64(a))
fmt.Println(result)

sergl
Автор

Для того чтоб переменной присвоился тип float64, а не integer достаточно просто написать a := 3.0 вместо a:=3

ispemkr
Автор

Отличная, простая и понятная подача материала. Благодарю автор! Подписался на Ваш канал.

Klaz
Автор

наверное удобнее если не "var a float64", а так "a := 144.0 "

wvoguuh
Автор

Спасибо за урок. Тут решил все вставить в цикл и написать проверку условия мат.операции. Ничего не получилось пока, но стало еще интереснее. Будет круто если в конце видео будет домашнее задание.

PorohTech
Автор

в случае, если нужно объявить float - необязательно типизировать вручную, можно просто написать a := 3.0 b :=5.0

manuntinovich
Автор

11:00 25.49 в математике округляется до 25

aqniyet_ilyassov
Автор

От себя добавлю что вместо соединения строк и конвертации числа в строку как в этом примере:
a := 7
b := 7
fmt.Println("Сума чисел: " + fmt.Sprint(a+b))
Можно просто передать несколько аргументов через запятую и неважно какого типа, например:
a := 7
b := 7
fmt.Println("Сумма чисел:", a+b, "Больше нуля?", a+b>0)
Вывод: Сумма чисел: 14 Больше нуля? true

leosha
Автор

Имею опыт с несколькими языками, но без глубинных знаний, в смысле не сенйор. Этот язык какая-то смесь разных языков, но мне понравилось.

clannajebyan
Автор

По поводу математики с числами в формате Float,
Важно помнить! Десятичные дроби в формате с плавающей точкой не могут быть точно представлены в памяти компьютера. Т.к. в памяти компьютера хранятся не десятичные дроби, а двоичные.
Соответственно дробь 1/10 в двоичном представлении становится бесконечной двоичной дробью.
Поэтому все математические действия с числами с плавающей точкой всегда дают не точный результат, а приближенный.
Честные языки, отображают такие числа явно.
Так 0.1 + 0.2 != 0.3
например в Python 0.1+0.2 дают результат
В Go это выражение даёт ответ 0.3
Где тут подвох и в какой момент Go округляет числа не вполне ясно.
Некоторые высокоуровневые языки программирования (например Lisp) хранят дробные десятичные числа в особом формате натуральных дробей типа 1/10 + 2/10 получается 3/10.

Второй момент, связанный с округлением.
25.49 - даже с точки зрения математики округляется до 25 - тут автор ступил.
ведь 0.49 < 0.5

В математике принято округлять дробные числа до целых 1.5 ->2; 2.5 ->3; 3.5 -4 и т.п.

Но в вычислительной технике есть другое правило: числа округляются до ближайшего чётного. т.е. 1.5 -> 2; 2.5 -> 2; 3.5 -> 4; 4.5 -> 4
Этот стандарт работает во всех языках, которые я знаю. Но в Go он не работает.
В Go функция Round всегда округляет числа с .5 до следующего целого, как в математике.
Тут плохо то, что такое поведение не соответствует стандарту и, следовательно не очевидно (хотя с математической точки зрения верно).

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

Пример с банками - абстрактен, но такая проблема может быть в любых вычислениях.

На сколько я знаю, в реальности вроде как при важных расчётах вообще используются другие типы данных, а не Float.

bonafilmo
Автор

Спасибо за ролик! У меня появился вопрос, а как округлить число до ближайшего числа с плавающей точкой? Например число: 27.75 и нужно округлить 28

ltbkqxw
Автор

Чувак, ты гонишь. Round 25.49 округляется правильно до 25. По правилам математики это тоже 25. Почему ты ожидаешь 26 - это уже твоё упущение.

acroltestol
Автор

есть какие-то серьезные ограничения, если смотришь результат работы программы не в закладке Терминал, а рядом, в Debug console? Тогда не надо постоянно набирать го мейн го. Нажимаешь F5 и прога запускается. Только для скана (ввод действия в калькуляторе) не работает. Но в целом отслеживать все действия удобно

vitaliikaverin
Автор

про школу так больше не шути, то инфаркт чуть не подхватил, не хочу больше возвращаться в этот храм абьюза ! *)

andreichemeris
Автор

Как сделать так что-бы exe не закрывалось? Я вроде написал fmt.Scan в конце тоже

TimmyTurner
Автор

коротко о курсах, а как сделать чтобы флоат работал с делением по модулю сами догадайтесь)))

AlexeyRiched
Автор

Это из сербского - "остача"?

Mriloveg
Автор

Очень режут слух формулировки неграмотные. Например "остача" вместо остатка, "парные" числа вместо четных чисел, "нацело деление", вместо целочисленного деления. У всего того что вы описываете - есть название, и этот сленг не просто режет слух, но и вызывает отторжение. Некоторые формулировки прямо выворачивают. Если такое услышать на собеседовании в хорошей компании, у тех лида поднимется давление.

кроме того встречаю некоторые неточности

Большое спасибо за проделанную работу, никоим образом не хочу обидеть или оскорбить автора, просто не выдержал

zigeufq