1
A
回答
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)
产生的数量。
相关问题
- 1. php,舍入数
- 2. 在PHP中舍入
- 3. 在C中不同情况舍入或舍弃小数点#
- 4. 在字典中舍入浮点数字
- 5. 在PHP中舍入小数点
- 6. 用php向下舍入数字
- 7. 舍入到在PHP
- 8. 不同结果而舍入小数
- 9. 在Objective-C中四舍五入数字
- 10. 在Visual Basic中舍入数字
- 11. Cmdlet在输出中舍入数字
- 12. PHP:划分/乘法/舍入,不是确切的数字
- 13. PHP整数舍入问题
- 14. PHP四舍五入数
- 15. 如何在PHP中对数字进行舍入?
- 16. 如何在php中四舍五入数字?
- 17. 在Oracle中的舍入舍入
- 18. 四舍五入数字:Python中的Java'Math.rint'
- 19. 舍入为SQL中的重要数字
- 20. 在Java中舍入小数
- 21. Numpy loadtxt舍入数字
- 22. 四舍五入数字
- 23. 四舍五入数字
- 24. SSIS舍入数字为2
- 25. 舍入数字例外
- 26. 数字四舍五入
- 27. PHP舍入号码
- 28. PHP向下舍入
- 29. R舍入单位的舍入数
- 30. 如何通过舍入R中的不同精度数字来阻止read.table?
向我们展示你试过吗?你试过和谷歌这个?我相当肯定,有一个本地PHP功能,做一些研究。 – Epodax
这样的事情:[工作示例](https://3v4l.org/NLaDe) – 2016-06-08 07:32:05
我试过用'ceil(1466521/10000)* 10000'显示'1500000',但其他数字长度 – amirali