收集数字
我从数据库中获得一些数字。我想围捕这些数字是这样的:收集数字
Database => Round up number
34 => 0
89 => 100
421 => 400
561 => 600
4421 => 4000
6701 => 7000
45000 => 50000
91000 => 90000
132000 => 130000
是否有任何PHP函数来做到这一点?因此,1000以下的数字将最接近100个数字。超过数千个数字将被四舍五入到最接近的1000个数字。如果数字超过10 000,那么它总是四舍五入到最接近的满10 000.
希望你明白我在做什么。
看一看的round()
功能这里
http://php.net/manual/en/function.round.php
和ceil()
功能这里
http://php.net/manual/en/function.ceil.php
喜欢的东西
$number = 1;
$number = ceil($number/10) * 10;
echo $number;
你会如何在这里使用这些功能? –
示例代码不像OP所要求的那样接近工作。它把'89'变成'90',而不是请求的'100'。 –
问题是“在PHP中有没有函数”,答案是肯定的 –
你可以使用一些简单的数学(主要是钙NUM长度)和负精密round()功能建立在
function customRound($number) {
return round($number, -floor(log10($number)));
}
echo customRound(6701); // sample of usage
-floor(log10($number))
这部分是calc下NUM的长度 - 1,也被否定了一轮()的需求
这轮'132000'到'100000',而不是'130000' OP要求。 –
现在呢,我已经纠正了它 – Robert
[Nope](http://prntscr.com/9tajph)。 –
因为我受够了的人不读这些该死的问题 ...
function myRound(int $number) : int {
// remove typehints if you're on old versions of PHP...
$magnitude = abs($number);
if($magnitude < 1000) $precision = -2;
elseif($magnitude < 10000) $precision = -3;
else $precision = -4;
return round($number,$precision);
}
我很想听听为什么这是downvoted。前进。招待我:) –
IDK,但我猜测的是偏离主题的态度。对不起,娱乐价值低,大声笑 – Michael
您可以使用这样的功能:
$number = 45000;
function rounder($num)
{
$length = strlen($num);
if(is_int($num))
{
if($num < 100)
return round($num, -($length));
elseif($num < 1000 || $num <= 9999)
return round($num, -($length-1));
else
return round($num, -4);
}
}
echo rounder($number);
虽然没有测试过,应该工作..
这需要'89'并给出'90',而不是'100' OP所要求的。 –
不是。 '132000'轮到'100000',而不是请求的'130000'。 –
@NiettheDarkAbsol这应该现在工作 –
这里是一个解决方案:
$numbers = [
34,
89,
421,
561,
4421,
6701,
45000,
91000,
132000
];
foreach ($numbers as $number) {
$len = strlen((string)$number);
$precision = $len - 1;
$precision = $len <= 2 ? 2 : $precision;
$precision = $len > 4 ? 4 : $precision;
echo $number . ' => '. round($number, -1 * $precision) . PHP_EOL;
}
输出:
34 => 0
89 => 100
421 => 400
561 => 600
4421 => 4000
6701 => 7000
45000 => 50000
91000 => 90000
132000 => 130000
你已经看过PHP的'round()'函数,并且看到它有一个'precision'参数? –
我假设你已经看过手册,对吗?具体来说,这个例子直接来自手册:'echo round(1241757,-3); // 1242000' – Simba
要添加,“精度”参数将需要随输入大小而变化。就像'if($ number