اذهب إلى المحتوى
  • 0

مشكلة في العمليات الحسابية للأعداد في PHP

معاذ عبد الخالق

السؤال

if(isset($_POST['sb_1'])){
    $pp = $_POST['st_1'];
    $rlst_counter = '500';                
    echo $ee = abs($pp - $rlst_counter);
}

المشكلة لما نفس الرقم بيتكتب مثلا 256.35 مش بيظهر نفسه

 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

دالة abs تأخذ القيمة المطلقة لعدد أي أنها ستحذف علامة السالب من أي رقم سلبي. 

هناك دالة round بدلاً من دالة abs حيث ستقرب الرقم إلى أقرب عدد صحيح، أي لو كان الرقم المدخل هو 256.35، فسوف تقوم دالة round بإرجاع 256.

وإن كان 256.35-، فسوف تقوم دالة round بإرجاع 256.

لكن أرجو توضيح ما المشكلة بالضبط، وأيضًا في حال التعامل مع أرقام مالية فالأرقام العشرية مهمة جدًا يجب الإحتفاظ بها وليس التقريب لأقرب عدد صحيح.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبا معاذ
اظن انه المشكلة عندك  في الارقام التي تحتوي علي فاصلة عند  الطباعة تطبع الارقام الصحيحة فقط
فمن الممكن استخدام number_format للتحكم في الارقام التي تظهر بعد العلامة العشرية  اوظهارها عن الطباعة عند استخدام echo
فمثلا يمكنك تحديث الكود الي ذاللك
 

if(isset($_POST['sb_1'])){
    $pp = floatval($_POST['st_1']);
    $rlst_counter = 500.0;
    $ee = abs($pp - $rlst_counter);

    echo number_format($ee, 2);
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

تستخدم دالة abs لحساب القيمة المطلقة للفرق بين pp$ و rlst_counter$.

القيمة المطلقة هي المسافة بين رقمين على خط الأعداد، دون اعتبار العلامة.

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

if (isset($_POST['sb_1'])) {
    $pp = $_POST['st_1'];
    $rlst_counter = '500';

    if ($pp == $rlst_counter) {
        echo $pp;
    } else {
        echo abs($pp - $rlst_counter);
    }
}

الكود سيعمل بهذه الطريقه

  • التحقق من وجود متغير _POST['sb_1']$.
  • فإذا كان موجودًا، فسيتم تخزين قيمة في المتغير pp$.
  • ثما سيتم المقارنه بين pp$ معrlst_counter $.
  • إذا كانا متساويين، سيتم عرضpp$.
  • فإذا لم يكونا متساويين، سيتم حساب القيمة المطلقة للفرق بينهما وعرضها
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...