Chirchiq davlat pedagogika universiteti matematika va informatika fakulteti matematika va informatika



Download 1,14 Mb.
bet4/4
Sana29.05.2023
Hajmi1,14 Mb.
#945616
1   2   3   4
Bog'liq
Dasturlash kurs ishi.KM

2.2 Demical moduli


decimal moduli - Suzuvchi nuqtali sonlar bilan ishlashda hisoblash natijasining to’g’iri emasligiga duch kelamiz:


x = 0.1
y = 0.1
z = 0.1

s = x + y + z

print(s)

Javib: 0,30000000000000004


round() funksiyasini soni yaxlitlash qo’llash yordamida bu muammoni yechishi mumkin. Bundan tashqari decimal ichki modulini ishlatish orqali ham bu muammoni yechish mumkin.
Bu moduldagi Decimal sinfi asosiy sonlar bilan ishlash kompanentasi hisoblanadi. Bu sinfni qo’llash uchun Decimal konstruktori yordamida uning obyektini yaratish zarur. Konstruktorga argument sifatida sonning satrdagi ifodasi uzatiladi:

Bundan so’ng Decimal obyektini arifimetik amallarda ishlatish mumkin:

import decimal
from decimal import Decimal

x = Decimal('0.1')


y = Decimal('0.1')
z = Decimal('0.1')

s = x + y + z

print(s)

Javob: 0.3



import decimal
from decimal import Decimal

s=Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')

print(s)

Javob: 0.0


Decimal bilan amallarda butun sonlarni ham ishlatish mumkin:

import decimal
from decimal import Decimal
x = Decimal('0.1')
s = x + 2
print(s)

Javob: 2.1


Ammo, kasrli amalarda float va Decimal aralashtirmaslik zarur:

import decimal
from decimal import Decimal
x = Decimal('0.1')
s = x + 0.1
print(s)
Traceback (most recent call last):
File "C:/Users/ADMIN/Desktop/Новая папка/1-misol.py", line 6, in
s = x + 0.1
TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'

Haqiqatdan ham hatolik yuz berdi.

Sonning kasr qismdagi raqamlar nechta bo’lishini quyidagicha aniqlash mummkin:

import decimal
from decimal import Decimal
x = Decimal('0.1')
s = 3 * x
print(s)

Javob: 0.30

"0.10" satr sonning kasr qismida ikkita belgi bo’lishini ko’rsatadi, agarda oxirgi belgilar nol bo’lsa ham. Mos ravishda "0.100" satr sonning kasr qismida 3 belgi bo’lishini anglatadi.
Decimal obyektlari sonlarni yaxlitlaydigan quantize() metodiga ega. Bu metodning birinchi argumenti sifatida sonning yaxlitlash formatini ko’rsatadigan Decimal obyekti uzatiladi:




import decimal
from decimal import Decimal

x = Decimal('0.444')

s = x.quantize(Decimal('1.00'))

print(s)

Javob: 0.44


import decimal
from decimal import Decimal

x = Decimal('0.555678')

s=x.quantize(Decimal('1.00'))

print(s)

Javob: 0.56



import decimal
from decimal import Decimal

x = Decimal('0.999')

s=x.quantize(Decimal('1.00'))

print(s)


Javob: 1.00

Foydalanilayotgan "1.00" satr sonning kasr qismidagi belgilar soni ikkita belgigacha yaxlitlanishini ko’rsatadi.


Kelishuv bo’yicha ROUND_HALF_EVEN o’zgarmasi soni yuqori tomonga yaxlitlashni anglatadi, agarda son juft bo’lmasa va keyingisi 4 dan katta bo’lsa, masalan:



import decimal
from decimal import Decimal,ROUND_HALF_EVEN
x = Decimal('10.025')
s=x.quantize(Decimal('1.00')),ROUND_HALF_EVEN
print(s)

javobi: (Decimal('10.02'), 'ROUND_HALF_EVEN')

import decimal
from decimal import Decimal,ROUND_HALF_EVEN
x = Decimal('10.035')
s=x.quantize(Decimal('1.00')),ROUND_HALF_EVEN
print(s)

javob: (Decimal('10.04'), 'ROUND_HALF_EVEN')


Bu erda yaxlitlash tartibi quantize() funksiyasiga ikkinchi parametr sifatida uzatilgan. "1.00" satri sonning kasr qismini yaxlitlash ikkita belgigacha bo’lishini anglatadi. Lekin, birinchi holda, "10.025" kasr qismdagi ikkinchi son-2 juft, shuning uchun, keyingi son 5 bo’lishiga qaramasdan, ikki uchga yaxlitlanmayapti. Ikkinchi holda, "10.025" ikkinchi son-3 juft emas, shuning uchun ham 4 ga yaxlitlanayapti.


Bunday yaxlitlashdagi tartib har doim ham foydali bo’lmasligi mumkin, shu sababli ham, quyidagi o’zgamaslardan foydalanish orqali tartibni qayta aniqlash mumkin:
 ROUND_HALF_UP – soni yuqori tomonga yaxlitlaydi, agarda undan keyingi son 5 yoki 5 dan katta bo’lsa;
 ROUND_HALF_DOWN – soni yuqori tomonga yaxlitlaydi, agarda undan keyingi son 5 dan katta bo’lsa:

import decimal
from decimal import Decimal,ROUND_HALF_DOWN
x = Decimal('10.026')
s=(x.quantize(Decimal('1.00')),ROUND_HALF_DOWN)
print(s)
javob: (Decimal('10.03'), 'ROUND_HALF_DOWN')

import decimal


from decimal import Decimal,ROUND_HALF_DOWN
x = Decimal('10.025')
s=(x.quantize(Decimal('1.00')),ROUND_HALF_DOWN)
print(s)
javob: (Decimal('10.02'), 'ROUND_HALF_DOWN')

 ROUND_05UP – faqat 0 ni birga yaxlitlaydi, agarda undan keyin 5 kelsa:





import decimal
from decimal import Decimal,ROUND_05UP

x = Decimal('10.025')

s=(x.quantize(Decimal('1.00')),ROUND_05UP)
print(s)

jabob: (Decimal('10.02'), 'ROUND_05UP')


 ROUND_CEILING – keyingi son qanday bo’lishidan qa’tiy nazar soni yuqori tomonga yaxlitlaydi:


 ROUND_FLOOR – keyingi son qanday bo’lishdan qa’tiy nazar soni yaxlitlamayadi:



import decimal
from decimal import Decimal,ROUND_FLOOR
x = Decimal('10.021')
s=(x.quantize(Decimal('1.00')),ROUND_FLOOR)
print(s)
javob: (Decimal('10.02'), 'ROUND_FLOOR')

import decimal


from decimal import Decimal,ROUND_FLOOR
x = Decimal('10.025')
s=(x.quantize(Decimal('1.00')),ROUND_FLOOR)
print(s)
javob: (Decimal('10.02'), 'ROUND_FLOOR')


XULOSA


Men ohirgi xulosamda pythoning foydalanish holatlari, xususiyatlati, afzalliklari, moslashuvchanligi va unchalik kata bo’lmagan qisimlari haqisa ma’lumot berish bilan tugatmoqchiman.


Serverda veb-ilovalarni yaratish;
Dasturiy ta'minot bilan birgalikda ishlatilishi mumkin bo'lgan ish oqimlarini yaratish;
Ma'lumotlar bazasi tizimlariga ulanish;
Fayllarni o'qish va o'zgartirish;
Murakkab matematikani bajarish;
Katta ma'lumotlarni qayta ishlash;
Tez prototiplash;
Ishlab chiqarishga tayyor dasturiy ta'minotni ishlab chiqish;


Professional ravishda Python veb-saytlarni ishlab chiqish, ma'lumotlarni tahlil qilish, sun'iy intellekt va ilmiy hisoblash uchun juda yaxshi . Ishlab chiquvchilar Python-dan unumdorlik vositalari, o'yinlar va ish stoli ilovalarini yaratish uchun ham foydalanadilar.

HiWindows, Mac, Linux, Raspberry Pi va boshqalar kabi turli platformalar bilan mos keladi. Ingliz tili bilan taqqoslanadigan oddiy sintaksisdan foydalanadi, bu esa ishlab chiquvchilarga boshqa dasturlash tillariga qaraganda kamroq qatorlardan foydalanish imkonini beradi. Kodni zudlik bilan bajarishga imkon beruvchi tarjimon tizimida ishlaydi, tezkor prototip yaratish. Protsessual, ob'ektga yo'naltirilgan yoki funktsional tarzda ishlov berilishi mumkin.
Python, dinamik ravishda terilgan til, ayniqsa, moslashuvchan bo'lib, xususiyatlarni yaratish uchun qattiq qoidalarni yo'q qiladi va turli usullar bilan muammolarni hal qilishda ko'proq moslashuvchanlikni taklif qiladi. Shuningdek, u foydalanishga dasturlarni muammoli sohaga qadar kompilyatsiya qilish va ishga tushirish imkonini beradi, chunki u kompilyatsiya vaqtini tekshirishdan ko'ra ish vaqti turini tekshirishdan foydalanadi.
Pastki tomondan Python-ni saqlash oson emas. Bitta buyruq kontekstga qarab bir nechta ma'noga ega bo'lishi mumkin, chunki Python dinamik ravishda terilgan tildir. Va Python ilovasining hajmi va murakkabligi oshib borishi bilan uni saqlab qolish, ayniqsa xatolarni topish va tuzatish tobora qiyinlashishi mumkin.

Foydalanuvchilarga texnik xizmat ko'rsatishni osonlashtiradigan kodni ishlab chiqish yoki birlik testlarini yozish uchun tajriba kerak bo'ladi. Tezlik Pythondagi yana bir zaiflikdir. Uning moslashuvchanligi, dinamik ravishda terilganligi sababli, to'g'ri ta'rifga ega bo'lish uchun sezilarli miqdordagi havolalarni talab qiladi va ishlashni sekinlashtiradi. Buni Pythonning muqobil ilovasi (masalan, PyPy) yordamida yumshatish mumkin.



FOYDALANILGAN ADABIYOTLAR




Python dasturlash asoslari -Anvar Narzullayev Toshkent -2021
http://cppstudio.com –Python tilida programmalash bo‘yicha namunalar izoxlari bilan keltirilgan
http://cplusplus.com – Python tilida mavjud konstruksiyalar ta’rifi, ishlatish namunalari bilan keltirilgan.
http://www.compteacher.ru/programming - dasturlash bo‘yicha video darsliklar mavjud.
http://www.intuit.ru – internet universitet, dasturlash bo‘yicha yozma va video ma’ruzalar o‘qish, test sinovlaridan o‘tish va sertifikat olish imkoniyati mavjud.
http://www.metanit.com – Python dasturlash tillari, Django texnologiyasi bo‘yicha ma’ruzalar, dasturlar namunasini olish mumkin.
http://www.ziyonet.uz – dasturlash asoslari bo‘yicha referatlar topish mumkin.
http://www.tami.uz/kitob.php – dasturlash bo‘yicha yozma va video ma’ruzalar o‘qish va kitobni yuklab olish imkoniyati mavjud.

ILOVA


x = 0.1
y = 0.1


z = 0.1
s = x + y + z
print(s)
import decimal
from decimal import Decimal
x = Decimal('0.1')
y = Decimal('0.1')
z = Decimal('0.1')
s = x + y + z
import decimal
from decimal import Decimal
s=Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')
print(s)
import decimal
from decimal import Decimal
x = Decimal('0.1')
s = x + 0.1
print(s)
Download 1,14 Mb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish