2016-02-26 97 views
0

我正在使用一個函數來使1000到1k和1000000到1m,但我想增加一個小數,它已經得到了這個,但它取代了向下舍入 所以如果我輸入1565我想獲得1.5且僅當我通過1600我想1.6(力回合下來)我使用這個功能:向下舍入到一位小數

public function convert($Input){ 
    if($Input<1000){ 
     $AmountCode = ""; 
     $Amount = $Input; 
    } 
    else if($Input>=1000000){ 
     $AmountCode = "M"; 
     $Amount = round(floatval($Input/1000000), 1, PHP_ROUND_HALF_DOWN); 
    } 
    else if($Input>=1000){ 
     $AmountCode = "K"; 
     $Amount = round($Input/1000, 1, PHP_ROUND_HALF_DOWN); 

    } 

    $Array = array(
     'Amount' => $Amount, 
     'Code' => $AmountCode 
    ); 

    return $Array; 

} 

方案1: 現在會發生什麼,如果我進入1565我得到1.6,如果我輸入1545我得到1.5是否有人知道如何強行將其捨棄?情景2:我輸入的數字是10665將輸出爲10.7k(向上取整),但我想顯示爲10.6k(向下取整),對於某些原因,我無法弄清楚如何做到這一點

+0

看我以前的答案http://stackoverflow.com/a/32624297/4098311 –

+1

[轉換量,其中輸入「100K」可能的複製,「100M」等](http://stackoverflow.com/questions/32623315/convert-amounts-where-input-is-100k-100m-etc) –

+0

@HalayemAnis這不完全是我的意思,我想如果一個數字是10665我希望它變成10.6K現在我得到了這個部分,但是它正在把它湊到一起,所以10665實際上變成了10.7K而不是四捨五入 – Timo

回答

1

爲了在PHP中進行舍入,他們有一個名爲floor()的函數。不幸的是,這個函數只返回一個int。但是,您可以先乘法,然後除法。看到這篇文章:PHP How do I round down to two decimal places?

這意味着你的代碼將是這樣的:

else if($Input>=1000000){ 
    $AmountCode = "M"; 
    $Amount = floor(floatval($Input/100000))/10; 
} 
else if($Input>=1000){ 
    $AmountCode = "K"; 
    $Amount = floor(floatval($Input/100))/10; 

}