如何舍入到最近的千?

时间:2011-03-01 02:51:04

标签: php

如何将数字舍入到最接近的千位?

function round($var) {
    // Round it
}

8 个答案:

答案 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);

http://php.net/manual/en/function.round.php

答案 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;