使用PHP向下舍入到10000的最接近倍数

使用PHP向下舍入到10000的最接近倍数,php,rounding,Php,Rounding,如果我有下面的代码,它获取一个数组,并将它们全部相加,那么我如何使用PHP将它们向下四舍五入到最接近的10000 这是我目前拥有的代码 $rows = $db->get("sales"); $sales = 0; foreach($rows as $row) { $stock = $sales + $row['sales']; } return $sales; 一个例子是 146740 那我怎么能把它作为回报呢 140000 虽然如果我有一个大于100万的数字,我怎么能返回为

如果我有下面的代码,它获取一个
数组
,并将它们全部相加,那么我如何使用PHP将它们向下四舍五入到最接近的10000

这是我目前拥有的代码

$rows = $db->get("sales");
$sales = 0;
foreach($rows as $row) {
    $stock = $sales + $row['sales'];
}
return $sales;
一个例子是

146740
那我怎么能把它作为回报呢

140000

虽然如果我有一个大于100万的数字,我怎么能返回为100万呢?

你可以把这个值除以1000。如果它是整数146740/1000=146。然后乘以1000得到146000除以10000,使用
floor
四舍五入到整数,然后乘以10000:

$x = 146740;
$x = 10000 * floor($x/10000);
或减去余数:

$x = 146740;
$x = $x - ($x % 10000);
要将其扩展到100万,您可以执行以下操作:

if ($x > 1000000) {
    $divisor = 1000000;
} elseif ($x > 10000) {
    $divisor = 10000;
} else {
    $divisor = 1;
}
$x = $x - ($x % divisor);

“最接近的万分之一”是指小数点后4位的分数。也许你的意思是“最接近的万分之一的倍数”,但你的例子没有做到这一点。它大约有1000个,但不是最近的一个;147000比146000更接近。@Barmar,关于“最接近10000的倍数”,你是正确的,但正如我之前在帖子中所说的,我想四舍五入,你仍然不一致。你说1万,但这个例子是1千。你想返回
“100万”
还是
1000000
?抱歉,我已经修改了我的问题,我最初没有意识到我在问什么,我的错。我把我的例子展示错了。更新的答案是使用10000,同时也展示了如何使用100万和10000。第二个减去余数的例子是最干净和最快的方法-很好的答案