تقريب Decimal: اضبط المدخل والمنزلة والتعادل. [1]
الخلاصة السريعة
أنشئ من نص، واستعمل quantize بمنزلة وقاعدة صريحتين. [1]
- Decimal('2.45') يحفظ العدد العشري؛ Decimal(2.45) يحول قيمة float المخزنة. [1]
- نقرب للأقرب؛ عند التعادل الدقيق يختار HALF_EVEN آخر رقم محتفظ به زوجياً. [2]
- للأعشار: 2.45 تصبح 2.4، و2.55 تصبح 2.6، و−2.45 تصبح −2.4. [2]
- float 2.45 أكبر من المنتصف في تشغيلنا؛ نتيجته 2.5. [1]
- المثال يستخدم دقة سياق 12 وأعداداً منتهية؛ تجاوز الدقة قد يسبب InvalidOperation. [1]
- HALF_UP يبعد التعادل عن الصفر؛ 2.4501 ليست تعادلاً وتصبح 2.5 بالقاعدتين. [2]
احفظ المدخل الذي تقصده
Decimal('2.45') من نص دقيق؛ Decimal(2.45) يحفظ قيمة float المخزنة. [1]
الأعداد هنا اخترناها للتوضيح؛ ليست أسعاراً أو قياسات جمعناها. سنحتفظ بمنزلة عشرية واحدة.
احسم المنتصف فقط بالزوجية
في HALF_EVEN نختار الأقرب أولاً. عند تساوي المسافتين فقط، نختار النتيجة ذات الرقم الأخير الزوجي. [2]
2.45 بين 2.4 و2.5 بمسافتين 0.05؛ نختار 2.4. ولـ2.55 نختار 2.6؛ الزوجية تخص الرقم المحتفظ به، لا العدد كله. [2]
نفّذ مثالاً محدداً
quantize يحدد المنزلة والقاعدة والسياق؛ الناتج 2.4. [1]
from decimal import Decimal, Context, ROUND_HALF_EVEN
ctx = Context(prec=12)
x = Decimal('2.45')
y = x.quantize(Decimal('0.1'), rounding=ROUND_HALF_EVEN, context=ctx)
print(y)اختبر طريق إنشاء العدد
Decimal(2.45) أكبر من 2.45 في تشغيلنا، فالناتج 2.5. [1]
افحص المدخل قبل التقريب؛ القاعدة لم تتغير. [1]

راجع الإشارة والدقة
HALF_UP يختار الأبعد عن الصفر عند التعادل؛ −2.45 تصبح −2.5، بينما HALF_EVEN يعطي −2.4. [2]
2.4501 أقرب إلى 2.5، لذا تتفق القاعدتان؛ رؤية 5 بعد المنزلة وحدها لا تثبت التعادل. [2]
نعالج أعداداً منتهية ضمن سياق دقته 12؛ إذا تجاوز طول معامل الناتج دقة السياق، تشير quantize إلى InvalidOperation. [1]
سجل المدخل والمنزلة والقاعدة والسياق مع الناتج عند مقارنة برنامجين. نجاح هذه الأمثلة لا يثبت ملاءمة كل إعداد لكل مسألة.
اقرأ أيضًا: كيفية تقريب الأعداد.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
