• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رند شدن اعداد
#1
Exclamation 
سلام
همونطور که میدونیم تابع number_format در هر صورت .5 به بالا رو گرد میکنه
کد پی‌اچ‌پی:
$Num=122345500.26357;
echo 
number_format($Num,3)."<br>"

این تابع رو هم پیدا کردم برای گرد نکردن، وای متأسفانه بعضی جاها کار نمیکنه:

کد پی‌اچ‌پی:
function fnumber_format($number$decimals=''$sep1=''$sep2='') {

        if ((
$number pow(10 $decimals 1) % 10 ) == 5)  //if next not significant digit is 5
            
$number -= pow(10 , -($decimals+1));

        return 
number_format($number$decimals$sep1$sep2);

}

$t=7.15;
echo 
fnumber_format($Num,3,'.',',')."<br>";
echo 
fnumber_format($t,3,'.',',')."<br>"

بنظرتون برای رند نشدن باید چیکار کنیم؟
یه راه اینه که عدد رو به رشته تبدیل کنیم و بعد بیایم بعد از point رو جدا کنیم و بعد عدد رو بدون ممیز number_format کنیم و بعد به اندازه ای که از ممیز میخوایم به رشته خروجی number_format الحاق کنیم...
نظر دوستان؟

راستی اینم برای اینکه وقتی ممیز صفر هست نشون نده پیدا کردم:
کد پی‌اچ‌پی:
function formatNumber$number$decimals=2$dec_point="."$thousands_sep=",") {
    
$nachkomma abs($number floor($number));
    
$strnachkomma number_format($nachkomma $decimals".""");

    for (
$i 1$i <= $decimals$i++) {
        if (
substr($strnachkomma, ($i * -1), 1) != "0") {
            break;
        }
    }
    
    return 
number_format($number, ($decimals $i +1), $dec_point$thousands_sep);

echo 
formatNumber($Num); 
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#2
number_format که گرد نمی کنه. الان خروجی مقدار اولی میشه این
122,345,500.264
  پاسخ
تشکر شده توسط : hidensoft
#3
(۱۳۹۱ اردیبهشت ۲۶, ۰۱:۳۲ ب.ظ)admin نوشته: number_format که گرد نمی کنه. الان خروجی مقدار اولی میشه این
122,345,500.264

شما الان خودت گرد کردی که؟؟؟؟؟
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#4
خب شما گفتی که 0.5 به بالا رو گرد می کنه.
خب کلک رشتی می زنیم Big Grin
کد:
$Num=122345500.26357;
echo substr(number_format($Num,4),0,-1)."<br>";
  پاسخ
تشکر شده توسط : hamid_80386 hidensoft
#5
داش وحید از شما دیگه بعیدهBig Grin
بابا خود پی اچ پی این تابع های خوشکل رو داره آخه چرا اینکارو میکنید

کد پی‌اچ‌پی:
echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.60);      // 4
echo round(1.955832);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.0452);    // 5.05
echo round(5.0552);    // 5.06


echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3


echo floor(4.3);   // 4
echo floor(9.999); // 9
echo floor(-3.14); // -4 

برای اینکه از نقطه به قبل رو برگردونه اینم خوبه

کد پی‌اچ‌پی:
echo intval(3.5)    //3
echo intval(3.4)    //3
echo intval(3.6)    //3 

اینجا ساعت 3.10 صبح! شما چقدر زود میخوابید Tongue
یاد یه شعری افتادم ، شبا که ما میخوابیم آقا پلیسه بیداره ...Cool
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : Hamid hamid_80386
#6
رضا اینا همش رند میکنه، میخوایم رند نکنه یعنی مثلاً وقتی 3.6 هست، همونو برگردونه نه 4 رو...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#7
من نفمیدم !!!
یعنی اینو میخوای ؟

123,789,456,852,456,579.6 ؟؟؟؟؟
  پاسخ
تشکر شده توسط :
#8
رضا یه مقدار حالش خوب نیست. ۲ نصف شب پس دادن همین میشه دیگه Big Grin
  پاسخ
تشکر شده توسط : Reza
#9
(۱۳۹۱ اردیبهشت ۲۷, ۰۱:۵۹ ب.ظ)hamid_xever نوشته: من نفمیدم !!!
یعنی اینو میخوای ؟

123,789,456,852,456,579.6 ؟؟؟؟؟

یعنی اگه 123,789,456,852,456,579.66 بود ما خواستیم با یه رقم اعشار نشون بدیم 123,789,456,852,456,579.7 نشه، 123,789,456,852,456,579.6 بمونه
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#10
کد پی‌اچ‌پی:
$number 123456.546854;
$explode explode(".",$number);
$number1 number_format($explode[0]);
$number2 number_format($explode[1]);
echo 
$number1.".".$number2

Big GrinBig Grin از کلک رشتی که وحید گفت دو درجه بالاتره Big Grin
بعدش من نمیدونم قسمت اعشار هم باید , داشته باشه ؟!! Huh
  پاسخ
تشکر شده توسط : hamid_80386 Reza


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان