如何将数字舍入到最接近的千位?
function round($var) {
// Round it
}
答案 0 :(得分:54)
PHP允许round
的负精度,例如:
$x = round ($x, -3); // Uses default mode of PHP_ROUND_HALF_UP.
而正精度表示小数点后的舍入位置,而负精度在小数点之前提供相同的幂。所以:
n round(1111.1111,n)
== ==================
3 1111.111
2 1111.11
1 1111.1
0 1111
-1 1110
-2 1100
-3 1000
作为一般解决方案,即使对于没有内置语言的语言,您也可以执行以下操作:
500
。1000
(必要时截断为整数)。1000
。当然,这是假设您想要 PHP_ROUND_HALF_UP
行为。有些人认为银行家四舍五入PHP_ROUND_HALF_EVEN
更有利于减少累积错误,但这是一个针对不同问题的主题。
答案 1 :(得分:6)
rounded_number = round(original_number, -3);
答案 2 :(得分:4)
使用其他海报round($number, -3)
提及的round function。
您也可以将您的数字除以1,000,舍入到最接近的整数然后乘以1,000。
此外,如果你想要向上舍入,你可以除以1,000,否定商,将其强制转换为整数,再将其否定,然后将其乘以1,000。
答案 3 :(得分:4)
这是一个回答下一千的答案:
abs(round(($a - 500), -3)) . "\n";
500-999然后轮到0和1000-1999轮到1000等
如果你想让它从1000开始,那就去做
abs(round(($a + 500), -3)) . "\n";
干杯!
答案 4 :(得分:2)
来自:http://us3.php.net/manual/en/function.round.php
$x = round ( $x, -3 );
答案 5 :(得分:2)
对于正整数:
function round($var) {
return ($var + 500) / 1000 * 1000;
}
答案 6 :(得分:2)
仅为了您的信息,Mikel answer的简单计算速度快于round():
Test name Repeats Result Performance
calculation 10000 0.030229 sec +0.00%
round 10000 0.040981 sec -35.57%
测试来源here。
答案 7 :(得分:2)
只是一个小小的改变,可能有助于整理!
$x = ceil(220.20 / 1000) * 1000;
echo $x;