【问题标题】:Rounding up to the second decimal place [duplicate]四舍五入到小数点后第二位[重复]
【发布时间】:2011-11-23 09:12:25
【问题描述】:

可能重复:
PHP Round function - round up to 2 dp?

我的问题是:

当我使用时

ceil(3.6451895227869);

我喜欢

4

但我想要

3.65

你能帮帮我吗?

UPDATE

请记住: 这应该总是像四舍五入一样四舍五入

3.6333333333333

不能是3.63,而应该是3.64

【问题讨论】:

标签: php numbers rounding ceil


【解决方案1】:

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

<?php

echo round(3.6451895227869, 2);

?>

编辑 试试这个自定义函数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

?>

【讨论】:

  • 不,但我想要它。这会四舍五入.. 好的,让我们看看例如:我想将此号码设置为上限:3.63333333333 到 3.64
  • 您不需要自定义函数 - 根据我的回答,您可以使用标志 PHP_ROUND_HALF_UP
  • 这个功能真的不是最好的。它可以简单得多。就像在这个stackoverflow.com/questions/2074527/php-rounding-numbers/…
  • 不要在 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); return round($value + $offset, $precision, PHP_ROUND_HALF_DOWN); }
  • In PHP 5.6 onwards, you may prefer to use the ** operator.(而不是pow()
【解决方案2】:

你想要圆

round(3.6451895227869, 2, PHP_ROUND_HALF_UP);

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

【讨论】:

  • PHP 回合 + PHP_ROUND_HALF_UP 只有在最后一位为 5 或更多时才会向上取整。示例:3.444 变为 3.44。 3.445 变成 3.45 来源:php.net/manual/en/function.round.php 所以tomexx 发送的函数其实真的很酷,完美运行。我只是在这里测试了它。
  • 请注意:此解决方案已被编辑,因此不再回答问题。
猜你喜欢
  • 1970-01-01
  • 2014-02-17
  • 2015-11-24
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 2022-01-12
相关资源
最近更新 更多