• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

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

mahanq&a

Registered User
تاریخ عضویت
22 اکتبر 2005
نوشته‌ها
183
لایک‌ها
2
محل سکونت
گیلان
دوستان چرا این اسکریپت جواب نمیده؟
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:
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
این اسکریپ چیش کار نمیکنه؟ چی کار باید بکنه؟
الان که کار میکنه و خروجیش هم ۳ هست.
 

sama_sally

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

PHP:
<?php
$a = 11/3;
echo $a;
?>
 

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 چاپ می شه !

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

Parsa_361

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
5 آگوست 2005
نوشته‌ها
889
لایک‌ها
10
محل سکونت
Isfahan, php.ini
به نقل از miladmovie :
PHP:
$a =(float) ($a / 3);
دیگه نیازی نیست ببیریش روی string :rolleyes:
متشکر ! :D
برای بالا رفتن اطمینان و دقت مضاعف هم میشه از کد زیر استفاده کرد :
PHP:
$a = (double)($a / 3);
چون این یه خورده اعشاریاش زیاده :D
 
بالا