Pythonda Sonlar (Numbers)
Muslimbek BaratovPythonda ishlatiladigan turli xil sonlar ma’lumot turlari: butun, haqiqiy va complex hisoblanadi. Ular int, float, complex deb belgilanadi. Masalan, 5 - butun son, 5.0 - float. Kompleks sonlar x+yj shaklda yoziladi, x haqiqiy qismi y mavhum qism.
Biz son qaysi sinfga tegishli ekanligini bilishda, yoki turini aniqlashda int mi, float mi yoki complex mi bunda type() funksiyasidan foydalanishimiz mumkin. isinstance() funksiyasi esa bu sonning biror tipga tegishli ekanligini tekshirish uchun foydalanamiz.
Misollarni ko'rib chiqaylik:
a = 5
print(type(a))
#output: <class 'int'>
print(type(5.0))
#output: <class 'float'>
c = 5 + 3j
print(c + 3)
#output:(8 + 3j)
print(isinstance(c, complex))
#output:True
Butun sonlar har qanday uzunlikda bo'lishi mumkin bo'lsa ham, float tipidagi sonlar atigi 15 ta kasrgacha aniqlanadi (16-o'rin aniq emas).
Biz har kuni ishlaydigan raqamlar o'nlik (bazaviy 10) sonlar tizimiga kiradi. Ammo kompyuter dasturchilari ikkilik (asos 2), o'n oltilik (asos 16) va sakkizlik (asos 8) son tizimlari bilan ishlashlari kerak.
Pythonda, biz bu raqamlardan oldin tegishli raqamni oldinga qo'yib, ushbu raqamlarni namoyish etishimiz mumkin. Quyida bu prefikslar keltirilgan.

Misollar:
print(0b1101011) #bu yerda 1101011 ikkilikdagi son 0b esa ikkilik kalit so'zi
# Output: 107
print(0xFB + 0b10)
# Output: 253 (251 + 2)
print(0O15)
# Output: 13
Turini o'zgartirish:
Raqamning bir turini boshqasiga o'zgartira olamiz. Bu shuningdek majburlash deb ham nomlanadi.
>>> 1 + 2.0
3.0
Yuqorida biz ko'rishimiz mumkinki, 1 (butun son) qo'shish uchun 1,0 (float) ga tushiriladi va natijada ham float raqami bo'ladi.
Biz, shuningdek, shunga o'xshash vazifalari ajralmas foydalanishimiz mumkin int(), float()va complex()ochiq turdagi orasida aylantirish. Ushbu funktsiyalar hatto satrlardan o'zgartirilishi mumkin .
>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)
Floatdan butun songa o'tkazilganda, son kesiladi (o'nlik qismlar olib tashlanadi).
Juda ham ko'p muhokamaga sabab bo'lgan masasa:
>>> (0.1 + 0.2) == 0.3
False
Nima bo'lyapti o'zi?
Ma'lum bo'lishicha, float raqamlari kompyuter xotirasida ikkilik kasrlar sifatida amalga oshiriladi, chunki kompyuter faqat ikkilik tushunadi (0 va 1). Shu sababli, biz biladigan kasrlarining aksariyati bizning kompyuterimizda aniq saqlanishi mumkin emas.
Bir misolni olaylik. 1/3 kasrni o'nlik son sifatida ifodalay olmaymiz. Bu 0.33333333 ... ni beradi, bu cheksiz uzoq va biz faqat taxmin qilishimiz mumkin.
Ma'lum bo'lishicha, 0.1 kasrining kasrlari 0.000110011001100110011 cheksiz uzunlikdagi ikkilik kasrga olib keladi ... va bizning kompyuterimiz uning cheklangan sonini saqlaydi.
Bu faqat 0.1 ga teng, ammo hech qachon teng bo'lmaydi. Demak, bu Python-dagi xato emas, balki bizning kompyutermizning cheklanishi.
>>> 0.1 + 0.2
0.3000000000000003
Ushbu muammoni bartaraf etish uchun Python bilan birga kelgan o'nlik moduldan foydalanishimiz mumkin. Float tipdagi sonlar 15 ta kasrgacha aniqlikka ega bo'lsa, o'nlik modul foydalanuvchi tomonidan aniqlanadi.
Farqni ko'raylik!!!
import decimal
print(0.1)
#Output:0.1
print(decimal.Decimal(0.1))
#Output:0.1000000000000000055511151231257827021181583404541015625
Ushbu modul maktabda o'rganganimizdek o'nlik hisoblashlarni amalga oshirishni xohlaganimizda ishlatiladi.
Shuningdek, u ahamiyatini saqlab qoladi. Biz bilamizki, 25,50 kg 25,5 kg dan aniqroqdir, chunki bittaga nisbatan ikkita muhim o'nlik joylarga ega.
from decimal import Decimal as D
print(D('1.1') + D('2.2'))
#Output:3.3
print(D('1.2') * D('2.50'))
#Output:3.000
Yuqoridagi misolda nolga e'tibor bering!!!
Biz so'rashimiz mumkin, nima uchun Decimal har safar float ni o'rniga amalga oshirolmaymiz? Asosiy sabab - bu samaradorlik. Floatda operatsiyalar Decimalga qaraganda tezroq bajariladi.
Float o'rniga Decimaldan qachon foydalanish kerak?
Odatda quyidagi hollarda Decimal-dan foydalanamiz!!!.
· Biz aniq o'nlik hisob-kitobmi talab qiladigan moliyaviy dasturlarni amalga oshirayotganda.
· Biz kerakli aniqlik darajasini nazorat qilishni xohlaganimizda.
· Muhim o'nliklar haqida tushunchani amalga oshirishni xohlaganimizda.
Fractions moduli haqida
Python o'z fractions moduli orqali kasr sonilarni o'z ichiga olgan operatsiyalarni ta'minlaydi .Ushbu modul ratsional son arifmetikasini qo'llab-quvvatlaydi.
Fraksiya ob'ektlarini har xil usullar bilan yaratamiz. Keling, ularni ko'rib chiqamiz.
import fractions
print(fractions.Fraction(1.5))
#Output:3/2
print(fractions.Fraction(5))
#Output:5
Maqola sizga yoqgan bo'lsa kanalga obuna bo'ling va keyingi maqolalarni kuzatib boring!👇👇👇