四舍五入到小数点后第二位

LIG*_*GHT 37 php numbers rounding ceil

可能重复:
PHP Round函数 - 最高可达2 dp?

我的问题是:

当我使用

ceil(3.6451895227869);
Run Code Online (Sandbox Code Playgroud)

我喜欢

4
Run Code Online (Sandbox Code Playgroud)

但我想要

3.65
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

UPDATE
Run Code Online (Sandbox Code Playgroud)

请记住:这应该像圆形时一样圆形到圆柱形

3.6333333333333

它不能是3.63但应该是3.64

tom*_*exx 66

查看http://www.php.net/manual/en/function.round.php

<?php

echo round(3.6451895227869, 2);

?>
Run Code Online (Sandbox Code Playgroud)

编辑 尝试使用此自定义函数http://www.php.net/manual/en/function.round.php#102641

<?php 
function round_up ( $value, $precision ) { 
    $pow = pow ( 10, $precision ); 
    return ( ceil ( $pow * $value ) + ceil ( $pow * $value - ceil ( $pow * $value ) ) ) / $pow; 
} 

echo round_up(3.63333333333, 2);  // 3.64

?>
Run Code Online (Sandbox Code Playgroud)

  • 不要在ceil函数内做乘法!你会得到浮点错误,这可能是非常不可预测的!尝试round_up(2.22,2),由于浮点错误,你会看到它给出了2.23的答案,而round_up(2.21,2)正确地给出了2.21.为了避免这种情况:`function ceiling($ value,$ precision = 0){$ offset = 0.5; if($ precision!== 0)$ offset/= pow(10,$ precision); 返回round($ value + $ offset,$ precision,PHP_ROUND_HALF_DOWN); }` (7认同)
  • 这个功能并不是最好的.它可能会简单得多.就像在http://stackoverflow.com/questions/2074527/php-rounding-numbers/2074540#2074540 (3认同)
  • 不,但我想要它。这将四舍五入..好吧,让我们看看例如:我想将这个数字取消:3.63333333333 到 3.64 (2认同)
  • `在 PHP 5.6 以后,您可能更喜欢使用 ** 运算符。`(而不是 `pow()`) (2认同)

Ada*_*son 5

你想要圆

round(3.6451895227869, 2, PHP_ROUND_HALF_UP);
Run Code Online (Sandbox Code Playgroud)

第二个参数是精度,标志告诉round总是向上舍入(如ceil)

  • PHP round + PHP_ROUND_HALF_UP仅在最后一位数为5或更多时才会向上舍入.示例:3.444变为3.44.3.445变为3.45来源:http://php.net/manual/en/function.round.php所以tomexx发送的功能实际上非常酷,而且效果很好.我刚刚在这里测试过.<?php function round_up($ value,$ precision){$ pow = pow(10,$ precision); return(ceil($ pow*$ value)+ ceil($ pow*$ value - ceil($ pow*$ value)))/ $ pow; } echo round_up(3.63333333333,2); // 3.64?> (10认同)