php 四舍五入,PHP 四舍五入,不四舍五入,四舍六入五成双(银行家舍入)

本文介绍了PHP中进行数值处理的几种方法,包括保留两位小数并四舍五入、不四舍五入,以及进一法和舍去法取整。同时,展示了自定义的四舍六入无成双的函数实现,涉及到BC数学库的使用,如bcadd、bccomp等。在使用自定义的round2和round3函数时,需要在编译PHP时启用BCMath扩展。
摘要由CSDN通过智能技术生成

1、php保留两位小数并且四舍五入,代码如下:

round(123.666666, 2); // 123.67

2、php保留两位小数并且不四舍五入,代码如下:

$offset = strpos($num, '.');

if ($offset !== false) {

$num = substr($num, 0, $offset + 3);

}

echo $num;

3、php进一法取整,代码如下:

echo ceil(4.3); // 5

echo ceil(9.999); // 10

4、php舍去法,取整数,代码如下:

echo floor(4.3); // 4

echo floor(9.999); // 9

5、四舍六入无成双(四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一)

function round2 ($num, $precision) {

$pow = pow(10, $precision);

//判断不进1的情况(五后为0且为奇)

if (substr($num * $pow, strpos($num * $pow, '.') + 1) == 5 && substr($num * $pow, strpos($num * $pow, '.') - 1, 1) % 2 == 0) {

return floor($num * $pow) / $pow;

} else {

return round($num, $precision);

}

}

function round3($num, $precision) {

$pow = pow(10, $precision);

//判断不进1的情况(五后为0且为奇)

if ( (floor($num * $pow * 10) % 5 == 0) && (bccomp(floor($num * $pow * 10), $num * $pow * 10) == 0) && (floor($num * $pow) % 2 == 0) ) {

return floor($num * $pow) / $pow;

} else {

return round($num, $precision);

}

}

要使用 BC 这个函数库,要在编译 PHP 程序时加入 --enable-bcmath 的选项。

bcadd: 将二个高精确度数字相加。

bccomp: 比较二个高精确度数字。

bcdiv: 将二个高精确度数字相除。

bcmod: 取得高精确度数字的余数。

bcmul: 将二个高精确度数字相乘。

bcpow: 求一高精确度数字次方值。

bcscale: 配置程序中所有 BC 函数库的默认小数点位数。

bcsqrt: 求一高精确度数字的平方根。

bcsub: 将二个高精确度数字相减。

如round2有错,请指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值