"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا تؤدي حسابات الفاصلة العائمة في PHP أحيانًا إلى نتائج غير متوقعة؟

لماذا تؤدي حسابات الفاصلة العائمة في PHP أحيانًا إلى نتائج غير متوقعة؟

تم النشر بتاريخ 2024-11-04
تصفح:290

Why do Floating-Point Calculations in PHP Sometimes Produce Unexpected Results?

حسابات الفاصلة العائمة في PHP: فهم حدود الدقة

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

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

$fooValue = 100.68;
$cowValue = 100.67;

$diffValue = $fooValue - $cowValue;
if($diffValue  

سيُخرج "خطأ" على الرغم من أنك قد تتوقع أن يُخرج "نجاح" استنادًا إلى القيم المحددة.

معالجة مشكلات الدقة

للتعامل مع قيود الدقة هذه في PHP، يمكن استخدام طرق بديلة:

  • مكتبة BC Math: مكتبة BC Math هي امتداد PHP يوفر عمليات حسابية عالية الدقة مصممة لـ معالجة الأخطاء المرتبطة بالحسابات العائمة. ويستخدم تمثيلًا عشريًا للأرقام، مما يضمن الحصول على نتائج دقيقة ضمن الدقة العشرية المحددة.
  • مكتبة GMP: مكتبة GMP (مكتبة GNU للحسابات الدقيقة المتعددة) هي مكتبة C محسنة للغاية تدعم حسابية عالية الأداء للأعداد الصحيحة. على الرغم من أنه يعمل بشكل أساسي مع الأعداد الصحيحة، إلا أنه يسمح بالتحويل من وإلى تمثيلات الفاصلة العائمة المختلفة، مما قد يخفف من مشكلات الدقة.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3