☄ دقت در محاسبات عددی (Floating vs Decimal vs Fraction)
در اغلب زبانهای برنامهنویسی، اعداد اعشاری از نوع Floating-point بهصورت دودویی در حافظه ذخیره میشوند.
این یعنی در بسیاری از محاسبات، با مقادیر تقریبی سروکار داریم، نه عدد دقیق.
برای افزایش دقت:
میتوان از Decimal استفاده کرد که خطای اعشاری را تا حد زیادی کاهش میدهد،
اما حتی Decimal هم در برخی سناریوهای خاص کاملاً بینقص نیست.
📌 وقتی دقت ۱۰۰٪ اهمیت دارد (مثل محاسبات مالی، آماری یا ریاضی دقیق)،
بهترین انتخاب Fraction است.
که Fraction عدد را بهصورت کسر منطقی (صورت/مخرج) ذخیره میکند، نه اعشار تقریبی؛
در نتیجه محاسبات:
. دقیق
. قابل پیشبینی
. بدون خطای اعشاری
انجام میشوند.
✅ خلاصهی انتخاب
float → سریع ولی تقریبی
Decimal → دقیقتر، مناسب محاسبات حساس
Fraction → دقیقترین گزینه برای محاسبات ایدهآل
🧪 مثال
from decimal import Decimal
from fractions import Fraction
# float
print(0.1 + 0.2)
# خروجی: 0.30000000000000004
# Decimal
print(Decimal("0.1") + Decimal("0.2"))
# خروجی: 0.3
# Fraction
print(Fraction(1, 10) + Fraction(2, 10))
# خروجی: 3/10📌 نکته مهم: float بهخاطر نمایش دودویی دچار خطا میشود. Decimal باید با رشته (string) ساخته شود. Fraction نتیجه را دقیق و بدون خطا نگه میدارد #numbers | #precision | #FloatingPoint | #Decimal | #Fraction | @Learnpythonicy