2016-06-08 65 views
1

我在我的代码中有不同的数字。在php中舍入不同的数字

比如我想1466521四舍五入至150000013422四舍五入至140004387四舍五入到4400

我怎样才能圆了每一个数字在PHP?

+1

向我们展示你试过吗?你试过和谷歌这个?我相当肯定,有一个本地PHP功能,做一些研究。 – Epodax

+0

这样的事情:[工作示例](https://3v4l.org/NLaDe) – 2016-06-08 07:32:05

+0

我试过用'ceil(1466521/10000)* 10000'显示'1500000',但其他数字长度 – amirali

回答

1

它非常简单,但逻辑任务...使用下面的代码

function rounded_fun($num){ 
    $num_length = strlen($num); 
    $devide_num = 1; 
    for($i=2;$i<$num_length;$i++){ 
     $devide_num = $devide_num*10; 
    } 
    $rounded_num = ceil($num/$devide_num) * $devide_num; 
    return $rounded_num; 
} 



echo rounded_fun(1466521); //1500000 
echo rounded_fun(13422); //14000 
echo rounded_fun(4387); //4400 
echo rounded_fun(12345); //13000 
0

通过使用ceil您可以实现您想要的结果。

if(!function_exists('ceiling')) 
{ 
    function ceiling($number, $significance = 1) 
    { 
     return (is_numeric($number) && is_numeric($significance)) ? (ceil($number/$significance)*$significance) : false; 
    } 
} 
$num = 4387; 
$round = (strlen($num)-2); 
$roundfraction = pow(10, $round); 
echo ceiling($num, $roundfraction); //output 4400 

更多的细节来看看http://php.net/manual/en/function.ceil.php

其他可替代可round功能:

$num = 123456789; 

echo round($num,0); // whole number - prints 123456789 
echo round($num,-1); // ten - prints 123456790 
echo round($num,-2); // hundred - prints 123456800 
echo round($num,-3); // thousand - prints 123457000 
echo round($num,-4); // ten thousand - prints 123460000 
echo round($num,-5); // hundered thousand - prints 123500000 
echo round($num,-6); // million - prints 123000000 
echo round($num,-7); // ten million - prints 120000000 
echo round($num,-8); // hundred million - prints 100000000 
echo round($num,-9); // billion - prints 0 

对于一般可以使用贝洛奥里藏特的解决方案:

$num = 1466521; 
$round = (strlen($num)-2)*-1; 
echo round($num,$round); // prints 1500000 
0

试试这个:

$str = '13422'; 
$ex = 1; 
$ex = str_pad($ex, (strlen($str)-1), 0); 
echo round(ceil($str/$ex), PHP_ROUND_HALF_UP) * $ex; 
0

你可以试试这个:

$str = 4387; // 13422, 1466521 
$len = pow(10,(strlen($str)-2)); // Here 2 present 2nd position of your digit. It will change according to your need. 
$result = ceil($str/$len) * $len; 
echo $result; 
0
$num = '1454856'; 
$base= pow(10, strlen($num)-2); 
echo ceil($num/$base) * $base; 
0

您可以使用不同的方法来达致这逻辑。

你可以使用这个函数来创建你的逻辑,但是这会将你的数字转换为字符串并最终返回一个数字。

function CustomRound($varNum) { 
    $varNum = (string)$varNum; 
    $len = strlen($varNum); 
    $varLastNum = (int)substr($varNum,2); 
    if($varLastNum>0) { 
     $varFirstTwoDigit = (int)substr($varNum,0,2); 
     $varFirstTwoDigit++; 
     return (int)str_pad($varFirstTwoDigit,$len,0); 
     } 
return $varNum; 
} 

第二种方法是检查有多少个号码后两位数字在那里,他们乘前两个数字与pow(10, $strLength-2)产生的数量。