دقة سعر الصرف والتقريب

حافظ على دقة أسعار الصرف العشرية، وقرّب النتائج النقدية مرة واحدة، وافهم التقريب إلى الأقرب مع ترجيح العدد الزوجي عند التعادل باستخدام أمثلة Python قابلة لإعادة التنفيذ.

حوت أبيض بجوار مِعداد وصينية من رموز العملات.

دقة السعر تختلف عن دقة المبلغ

قد تُعرض نتيجة بعملة USD بمنزلتين عشريتين، بينما يحتاج سعر الصرف المستخدم لحسابها إلى عدة منازل إضافية. وتقليل منازل السعر لمطابقة صيغة عرض العملة يغيّر المدخل المستخدم في كل تحويل.

باستخدام السعر التوضيحي من اليورو إلى الدولار 1.08765، ينتج عن EUR 250 مبلغ USD 271.91250 قبل التقريب، أو USD 271.91 إلى منزلتين. أما تقريب السعر أولًا إلى 1.09 فينتج USD 272.50: فرق قدره 59 سنتًا في النتائج المعروضة.

التقريب إلى العدد الزوجي يحسم حالات التعادل التام

عندما تكون القيمة في منتصف المسافة تمامًا بين قيمتَي التقريب، تُختار القيمة التي يكون آخر رقم محتفظ به فيها زوجيًا. فعند التقريب إلى منزلتين عشريتين، تصبح 1.005 هي 1.00 وتصبح 1.015 هي 1.02. وتختلف هذه القاعدة عن التقريب دائمًا إلى الأعلى عند التعادل.

هذه أمثلة عشرية دقيقة. والقيم الواقعة أعلى نقطة المنتصف أو أسفلها بقليل ليست حالات تعادل. ويجب أن يكون نمط التقريب جزءًا من سياسة الحساب، لا أن تحدده مصادفةً دالة التنسيق المستخدمة.

حلّل السلاسل العشرية مباشرة

تستطيع وحدة decimal في Python إنشاء قيم عشرية من سلاسل نصية وتقريب النتيجة إلى مضاعف قيمة محددة. ويوضح المثال المحلي التالي حساب مبلغ بمنزلتين عشريتين مع ترجيح العدد الزوجي عند التعادل؛ ولا يجلب سعر صرف مباشرًا.

مثال Python قابل للتشغيل
from decimal import Decimal, ROUND_HALF_EVEN, localcontext

with localcontext() as ctx:
    ctx.prec = 40
    amount = Decimal("250.00")
    rate = Decimal("1.08765")
    result = (amount * rate).quantize(
        Decimal("0.01"), rounding=ROUND_HALF_EVEN
    )

print(result)  # 271.91

اختر الوحدة الصغرى للعملة

لا تستخدم منزلتين عشريتين لكل عملة مستهدفة. تستخدم عملية التحويل لدى Narwhal الوحدة الصغرى للعملة المستهدفة وفق ISO 4217. فمثلًا، تعيد الاستجابة الموثقة للتحويل من USD إلى JPY مبلغًا محوّلًا بوحدات ين كاملة.

استخدم بيانات العملة الحالية أو المبلغ المُعاد من نقطة نهاية التحويل. وقد تفرض قواعد تقريب فئات النقد، وقواعد عرض التاجر، والسياسات المحاسبية متطلبات إضافية؛ وينبغي أن تكون هذه اختيارات صريحة منفصلة عن دقة السعر.

امنع فقدان الدقة الذي يمكن تجنبه

قد يؤدي تحويل سلسلة نصية لعدد عشري إلى عدد ثنائي ذي فاصلة عائمة إلى فقدان معلومات قبل معالجتها بمكتبة للحساب العشري. احتفظ بالسلسلة الأصلية عند التعامل مع API، واختر دقة حساب عشرية كافية لأكبر مبلغ وسعر صرف مدعومين.

  • احتفظ بسلسلة السعر المستلمة للتدقيق وإعادة الإنتاج.
  • نفذ الضرب أو القسمة الوسيطة بدقة العمل؛ وقرّب المبلغ النهائي مرة واحدة.
  • حدد نمط التقريب والقيمة التي سيُقرّب الناتج إلى مضاعفاتها.
  • نسّق القيم للعرض فقط، ولا تُعد إدخال نص منسق في عملية حسابية.

طابق النتائج باستخدام المدخلات نفسها

إذا اختلف حساب محلي عن قيمة الحقل converted لدى Narwhal، فقارن المبلغ المُدخل وسعر الصرف المُعاد بكامل دقته والوحدة الصغرى للعملة المستهدفة ونمط التقريب. تحقّق من هذه العناصر قبل افتراض أن النتيجة خاطئة.

قد يؤدي تحويل مبلغ مقرب إلى العملة الأصلية مجددًا إلى فقدان مبلغ صغير حتى دون فرق بين سعرَي الشراء والبيع. وفي الحسابات المجمّعة، قد يختلف تقريب كل بند ثم جمع البنود عن جمعها دون تقريب ثم تقريب المجموع مرة واحدة. اختر القاعدة التي يتطلبها التطبيق ووثّقها باتساق.

المصادر والمراجع

تاريخ النشر . آخر مراجعة .