Home  >  Article  >  Backend Development  >  php 四舍六入(银行家舍入)如何实现?有现成的方法吗

php 四舍六入(银行家舍入)如何实现?有现成的方法吗

WBOY
WBOYOriginal
2016-06-06 20:43:131217browse

求问php 四舍六入(银行家舍入)如何实现?谢谢各位~

回复内容:

求问php 四舍六入(银行家舍入)如何实现?谢谢各位~

四舍五入的方法是round(),文档在此:
http://php.net/manual/zh/function.round.php
如:

<code>php -r "echo round(1/8,2);"
</code>

将输出:

<code>0.13
</code>

但是,如果你的浮点数不是从其它地方传进来的(例如$_GET传入,或者取自数据库),而是你自己用两个数计算出来的,请牢记,不要使用PHP内置的+-*/操作符,请使用bcmath,执行下面这段代码你就知道原因了:

<code>php -r "echo 19.45-19.35;"
</code>

我也以为你是笔误了,回答了四舍五入的,银行家舍入的方法也是round(),第三个参数用PHP_ROUND_HALF_EVENPHP_ROUND_HALF_ODD都可以,如

<code>php -r "echo round(1/8,2,PHP_ROUND_HALF_ODD);"
</code>

你问的是五舍六入吧,四舍六入的话,五怎么办?

<code>round($number, PHP_ROUND_HALF_DOWN);
</code>

UPDATE

查了一下,还真有银行家舍入这种四舍六入,五看奇偶的做法
PHP_ROUND_HALF_ODD 或者 PHP_ROUND_HALF_EVEN 也许是你要的
手册里有

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn