2012-03-10 47 views
0

我有一個簡單的計算器腳本來計算Facebook的見解。用PHP舍入劃分變量

我的腳本中有一個名爲fb_growth的函數,我在這裏傳遞兩個參數:一個用於當前月份的數據($ moc)和一個用於上個月的數據($ mop),我試圖找到增長百分比(正數或負數)。這裏是我的函數腳本:

//Growth Calculator Function 
function fb_growth($moc, $mop) { 
    if($moc>=$mop) { 
     $grp = ($moc/$mop); 
     $grf = ($grp - 1); 
     return $grf; 
    } 
    else if($moc<$mop) { 
     $grp = ($mop/$moc); 
     $grf = (1 - $grp); 
     return $grf; 
    } 
} 

我輸入的值來自用戶填寫的表單。在這種特殊情況下,傳入的數字是fb_growth($fbfi1, $fbfi2);,其中$ fbfi1等於字符串'1719223',$ fbfi2等於字符串'1859867'。在這種情況下,$ moc小於$ mop,所以1719223除以1859867,這應該返回1.08180672315,而是返回1,然後減1,得到0.我想結束的是' - .08180672315',這將是我的增長百分比,但我無法讓它給我這個結果。如果我echo ("1859867"/ "1719223");然後我得到1.08180672315,但是當字符串變量的舉行,我echo ("$fbfi2"/"$fbfi1");然後我得到1

我試過的setType()爲雙和$ GRF和兩個$ fbfi1 & 2的int和相同的結果。如果我將$ grf設置爲全局並回顯gettype(),它會給我double或int,但我仍然得到相同的值:0.是否有我可以在我的php設置中調整此值,或者是否存在我的設置有問題?我找不到任何文檔。幫助非常感謝,謝謝!

回答

0

而問題是......在條目編號逗號!我輸入的是123,456而不是123456,這就是當你只是不小心複製和粘貼時,你會得到什麼......哇。感謝所有的幫助,我學到了很多關於鑄造的知識!

2

PHP做自動注入,看到type juggling manual。整數除法得出整數結果(因此爲1)。

演員做算術計算前值:(float) $var

+0

好了,所以我已澆鑄$ fbfi1和2個與浮子(浮子)$ fbfi1 = $ _POST [ 'pvm1'];它在表單中設置值,以及在函數中將$ grp和$ grf轉換爲浮點數,但我仍然得到相同的結果。 – 2012-03-10 12:43:42

+0

我的代碼現在看起來像這樣//增長計算器功能 \t \t \t功能fb_growth($ MOC,$ MOP){ \t \t \t \t如果($ MOC> = $ MOP){ \t \t \t \t \t(浮點) $ grp =($ moc/$ mop); \t \t \t \t \t(float)$ grf =($ grp - 1); \t \t \t \t \t return $ grf; \t \t \t \t \t} \t \t \t \t ELSEIF($ MOC <$拖把){ \t \t \t \t \t(浮點)$ GRP =($拖把/ $ MOC); \t \t \t \t \t(float)$ grf =(1 - $ grp); \t \t \t \t \t return $ grf; \t \t \t \t \t} \t \t \t \t}從上面的評論也爲 – 2012-03-10 13:30:13

+0

通過你仍然在做整數divison參數的代碼。其中一個操作數必須是float。 – 2012-03-11 00:35:22