2016-02-26 98 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; 

}