دوستان چرا این اسکریپت جواب نمیده؟

شروع موضوع توسط mahanq&a ‏18 نوامبر 2005 در انجمن PHP

  1. mahanq&a

    mahanq&a Registered User

    تاریخ عضویت:
    ‏22 اکتبر 2005
    نوشته ها:
    183
    تشکر شده:
    0
    محل سکونت:
    گیلان
    دوستان چرا این اسکریپت جواب نمیده؟
    PHP:
    <?php
    $a
    =11;
    $a=$a/3;
    $b=(int)$a;
    $a=$a-$b;
    if(
    $a==0.66666666666667){
    echo
    "1";
    }elseif(
    $a==0.33333333333333){
    echo
    "2";
    }else{
    echo
    "3";
    }
    این تقسیم بر سه حتماً باید باشه و نمیشه بهش دست زد. بنا براین باید رو if کار کنم تا این اسکریپت درست کار کنه. اما هرچی تلاش کردم نشد!
    اگه دوستی میتونه یه کاری کنه که اسکریپت کار کنه یه دنیا مخلصشم.
    :cool:
     
  2. Parham

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,039
    تشکر شده:
    1
    این اسکریپ چیش کار نمیکنه؟ چی کار باید بکنه؟
    الان که کار میکنه و خروجیش هم ۳ هست.
     
  3. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    خوب نبایدم کار کنه!!!!
    آخه شما از کجا میدونه php جواب 11 تقسیم بر 3 رو این عدد میاره
    شما اول تقسیمو خودت انجام بده با php بعد اسکریپتو درست کن:

    PHP:
    <?php
    $a 
    11/3;
    echo 
    $a;
    ?>
     
  4. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
    دوستان عزیز ! :D :happy:
    شما ها نمی دونید که مقادیر اعشاری رو مستقیم نمی شه تو شرط یا جاهایی مثل این استفاده کرد !!!!!!!!!
    این دوستونم 2 تا اشتباه داره !
    اولین اشتباه که زیاد مهم نیست و یک اشتباه تایپی است اینه که یه 6 کم گذاشته !

    دومین اشتباه که خیلی هم مهمه اینه که اعداد اعشاری رو مستقیم نمی شه در خیلی جاها نوشت !!!
    یکی از راه حل های آن اینه که اول عدد اعشاری رو تبدیل به String کنیم و بعد از اون در شرط ها استفاده کنیم.
    من اسکریپت رو تعمیر کردم :
    PHP:
    <?PHP
    $a 
    11;
    $a $a 3;
    $b = (int)$a;
    $a $a $b;
    settype($a"string");
    if (
    $a == "0.66666666666667")
        echo 
    "1";
    elseif (
    $a == "0.33333333333333")
        echo 
    "2";
    else
        echo 
    "3";
    ?>
    همونطور که می بینید عدد 1 چاپ می شه !

    نکته : زیبا نوشتن کد خیلی در پیدا کردن اشتباه کمک می کنه !
     
  5. miladmovie

    miladmovie مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    1,936
    تشکر شده:
    2
    PHP:
    $a =(float) ($a 3); 
    دیگه نیازی نیست ببیریش روی string :rolleyes:
     
  6. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
    متشکر ! :D
    برای بالا رفتن اطمینان و دقت مضاعف هم میشه از کد زیر استفاده کرد :
    PHP:
    $a = (double)($a 3); 
    چون این یه خورده اعشاریاش زیاده :D
     
  7. footbal
  8. mahanq&a

    mahanq&a Registered User

    تاریخ عضویت:
    ‏22 اکتبر 2005
    نوشته ها:
    183
    تشکر شده:
    0
    محل سکونت:
    گیلان
    کار ما راه افتاد:happy:
     
zarpopخرید بک لینک