math paketi
math — matematik hisob-kitoblar (ildiz olish, daraja, yaxlitlash, trigonometriya va h.k.) uchun mo'ljallangan standart paket. Deyarli barcha funksiyalar float64 turi bilan ishlaydi.
import "math"
Sqrt() va Pow()package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Sqrt(64)) // kvadrat ildiz
fmt.Println(math.Pow(2, 10)) // 2 ning 10-darajasi
}
Natija:
8
1024
[!NOTE]
math.Sqrt()vamath.Pow()har doimfloat64qaytaradi — hatto natija butun son bo'lsa ham (8emas,8.0). Agar natijaniintsifatida ishlatish kerak bo'lsa, uni aniq turga aylantiring:int(math.Sqrt(64)).
Abs(), Max(), Min()package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Abs(-15.5)) // manfiy belgisini olib tashlaydi
fmt.Println(math.Max(10, 20))
fmt.Println(math.Min(10, 20))
}
Natija:
15.5
20
10
[!IMPORTANT]
math.Max()/math.Min()faqat ikkitafloat64qiymat bilan ishlaydi (uchtadan ortiq son yoki slays bilan emas). Agar slaysdagi eng katta/eng kichik elementni topish kerak bo'lsa,slices.Max()/slices.Min()funksiyalaridan foydalaning — bu haqdaslicespaketiga bag'ishlangan darsda gaplashamiz. Go 1.21 dan boshlab, oddiy sonlar uchun esa tilning o'zida mavjud bo'lganmax()vamin()o'rnatilgan funksiyalarini ham ishlatish mumkin:max(10, 20, 5).
Round(), Floor(), Ceil(), Trunc()package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Round(4.5)) // eng yaqin butun songa yaxlitlaydi
fmt.Println(math.Floor(4.9)) // pastga yaxlitlaydi (kichraytiradi)
fmt.Println(math.Ceil(4.1)) // yuqoriga yaxlitlaydi (kattalashtiradi)
fmt.Println(math.Trunc(4.7)) // kasr qismini shunchaki kesib tashlaydi
}
Natija:
5
4
5
4
| Funksiya | Vazifasi | 4.7 uchun | -4.7 uchun |
|---|---|---|---|
Round() | eng yaqin butun songa | 5 | -5 |
Floor() | pastga (kichikroq tomonga) | 4 | -5 |
Ceil() | yuqoriga (kattaroq tomonga) | 5 | -4 |
Trunc() | kasr qismini kesish | 4 | -4 |
Mod()Oddiy % operatori faqat butun sonlar bilan ishlaydi. Kasr sonlar uchun qoldiqni topish kerak bo'lsa, math.Mod() ishlatiladi:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Mod(10, 3))
}
Natija:
1
Pi, E, MaxInt64 va h.k.math paketida tez-tez kerak bo'ladigan matematik konstantalar ham oldindan tayyorlab qo'yilgan:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi) // π soni
fmt.Println(math.MaxInt64) // int64 turi qabul qiladigan eng katta son
fmt.Println(math.MaxInt32) // int32 turi qabul qiladigan eng katta son
}
Natija:
3.141592653589793
9223372036854775807
2147483647
Inf() va NaN()Ba'zi hisob-kitoblar (masalan, 0ga bo'lish kasr sonlarda) natijasi "cheksizlik" yoki "son emas" (NaN — Not a Number) bo'lishi mumkin. Bularni tekshirish uchun:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Inf(1)) // musbat cheksizlik (+Inf); -1 bo'lsa -Inf
result := math.NaN()
fmt.Println(math.IsNaN(result)) // result "son emas"ligini tekshiradi
}
Natija:
+Inf
true
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Log(math.E)) // natural logarifm (asosi e)
fmt.Println(math.Log10(1000)) // 10 asosli logarifm
fmt.Println(math.Cbrt(27)) // kub ildiz
}
Natija:
1
3
3
math paketida bulardan tashqari trigonometrik funksiyalar (Sin(), Cos(), Tan()) ham mavjud — ular ko'proq grafika, geometriya yoki fizik hisob-kitoblarda kerak bo'ladi.
| Vazifa | Funksiya |
|---|---|
| Kvadrat ildiz / daraja | math.Sqrt() / math.Pow() |
| Manfiy belgini olib tashlash | math.Abs() |
| Ikkita sondan katta/kichigi | math.Max() / math.Min() (yoki Go 1.21+ max()/min()) |
| Yaxlitlash | math.Round(), Floor(), Ceil() |
| Kasr sonda qoldiqni topish | math.Mod() |
| Cheksizlik/NaN tekshirish | math.IsInf() / math.IsNaN() |