מודול ה־`decimal` של Python
מאמר זה מסביר את מודול ה־decimal
של Python.
תוכלו ללמוד על יסודות החישובים עם מודול ה־decimal
, ניהול דיוק, עיגול ועוד, כולל דוגמאות קוד.
YouTube Video
מודול ה־decimal
של Python
המודול decimal
של Python מספק חישוב עשרוני בדיוק קבוע כדי למנוע שגיאות שמתרחשות בחישובי נקודה צפה. על ידי שימוש במודול זה, ניתן לקבל תוצאות אמינות יותר בחישובים פיננסיים או חישובים הדורשים דיוק גבוה. במצבים שבהם שגיאות מטיפוס float
מהוות בעיה, מודול ה־decimal
יעיל.
שימוש בסיסי במודול ה־decimal
בעת השימוש במודול ה־decimal
, יש לייבא את המחלקה Decimal
ולנהל ערכים כמופעים של המחלקה הזו. בהמשך, נדגים את השימוש הבסיסי.
1from decimal import Decimal
2
3# Basic usage example of Decimal
4a = Decimal('0.1')
5b = Decimal('0.2')
6result = a + b
7
8print(f"Result: {result}") # Result: 0.3
- קוד זה מבצע חיבור מדויק של 0.1 ו־0.2 באמצעות המחלקה
Decimal
. ביצוע אותו החישוב עם טיפוסfloat
מביא לתוצאות עם שגיאות, בעוד שהשימוש ב־Decimal
נמנע משגיאות אלו.
שליטה בדיוק
מודול ה־decimal
מאפשר לשלוט בקלות בדיוק (מספר הספרות אחרי הנקודה העשרונית) של החישובים. ניתן להשתמש בפונקציה getcontext()
כדי לאחזר את ההקשר הנוכחי ולשנות את ההגדרות שלו.
1from decimal import Decimal, getcontext
2
3# Set the precision
4getcontext().prec = 4 # Set to 4 decimal places
5
6a = Decimal('1') / Decimal('3')
7print(f"Result with precision 4: {a}") # Result with precision 4: 0.3333
- בדוגמה זו, הדיוק מוגדר ל־4 ספרות לחישוב של
1 ÷ 3
. על ידי שימוש ב־Decimal
, ניתן להגדיר את הדיוק של החישובים לפי הצורך, כך שניתן להתאים את התוצאות בהתאם.
עיגול
מודול ה־decimal
כולל מספר אפשרויות להגדיר שיטות עיגול. להלן דוגמאות לשימוש באפשרויות עיגול שונות, כגון ROUND_UP
ו־ROUND_DOWN
.
1from decimal import Decimal, ROUND_UP, ROUND_DOWN
2
3# Example of rounding a number
4a = Decimal('1.2345')
5
6# Rounding up
7rounded_up = a.quantize(Decimal('0.01'), rounding=ROUND_UP)
8print(f"Rounded Up: {rounded_up}") # Rounded Up: 1.24
9
10# Rounding down
11rounded_down = a.quantize(Decimal('0.01'), rounding=ROUND_DOWN)
12print(f"Rounded Down: {rounded_down}") # Rounded Down: 1.23
- כאן, נעשה שימוש ב־
quantize()
לעיגול למעלה ולמטה של מספרים לדיוק של 2 ספרות עשרוניות. זה מאפשר עיגול וגם מגוון שיטות עיגול נוספות.
הקשר תפעולי וחריגות
מודול ה־decimal
יכול גם לטפל בשגיאות וחריגות שמתרחשות במהלך פעולות. ניתן להגדיר טיפול מותאם אישית עבור שגיאות ספציפיות, כמו חלוקה באפס או גלישה.
1from decimal import Decimal, getcontext, DivisionByZero
2
3# Exception handling
4getcontext().traps[DivisionByZero] = True
5
6try:
7 result = Decimal('1') / Decimal('0')
8except DivisionByZero:
9 print("Division by zero error caught!")
- בדוגמה זו, חריגת
DivisionByZero
נתפסת כאשר מתרחשת חלוקה באפס. במודולdecimal
, ניתן לשלוט בשגיאות ולהתאים אותן אישית בדרך זו.
סיכום
מודול ה-decimal
שימושי ביותר בחישובים פיננסיים או במצבים שבהם נדרשת דיוק רב כדי למנוע שגיאות חישוב בנקודה צפה. הוא תומך במגוון רחב של יישומים, מחישובים בסיסיים ועד ניהול דיוק, עיגול וטיפול בחריגות. סקרו את הנקודות המסכמות למטה והשתמשו במודול decimal
בהתאם לצרכים הספציפיים שלכם.
- חישובים עשרוניים מדויקים ניתנים לביצוע באמצעות המחלקה
Decimal
. - ניתן להתאים את הגדרות הדיוק והעיגול באופן חופשי.
- ניתן לנהל חריגות כמו חלוקה באפס.
זה מאפשר לכם להשתמש במודול decimal
כדי למזער שגיאות במצבים הדורשים חישובים מספריים מדויקים.
תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.