מודול ה־`decimal` של Python

מודול ה־`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 בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.

YouTube Video