خطأ منطقي - الإصدار 5.6.30 من لغة PHP لم أجد له حل

السلام عليكم ورحمة الله وبركاته

صادفت اليوم خطأ منطقي شل حركة النظام وهو كالتالي:

var_dump($total_amount);
var_dump($this->TOTAL_AMOUNT);
if( $total_amount != $this->TOTAL_AMOUNT){
    echo  "System price error {$total_amount} != {$this->TOTAL_AMOUNT}";
}
exit();

مخرجات الكود السابق كالتالي وهو ناتج غير منطقي:

float(344586.57) float(344586.57) 
System price error 344586.57 != 344586.57

الناتج يعني أن الشرط محقق مع أن الرقمين متساويين حاولت استخدام معاملات المساواه من نفس النوع !== مع أن القيم في الأساس من نفس النوع وهو float ولكن دون جدوى

  • لم استطع تحديد سبب المُشكلة بعد لأجد لها حل o_O

  • لم أجرب إصدارات أخرى من اللغة لأن النظام يعتمد على بعض الدوال المحذوفة والترقية ستؤدي إلى توقف عمل النظام.


  • طرحت المُشكلة على stackoverflow وتم تحويلي للرابط رقم [1]، فمعاملات المقارنة العادية لا تصلح لمقارنة الأعداد ذات الفاصلة العائمة Float راجع الرابط رقم 2، فعليك إما تقريب القيمة عبر round رابط [3] قبل عملية المساواه أو استخدام أحد الدوال المخصصة لهذا الغرض مثل bccomp رابط [4]

[1]

[2]

[3]

[4]