一个PHP版本的四舍六入五留双的算法,支持保留任意位小数

分享一个PHP版本的四舍六入五留双的算法,支持保留任意位小数 。

= 0 ? 0.5 : -0.5;// 整数部分$value_power_int = bcsub($value_power, 0, 0);// 小数部分$diff = bccomp(bcsub($value_power, $value_power_int),$cmp);// 正数 大于0.5 入if ($flag > 0 && $diff > 0) {// +入$value_power_int = bcadd($value_power_int, 1);} elseif ($flag < 0 && $diff < 0) {// 负数 小于-0.5 入// -入$value_power_int = bcadd($value_power_int, -1);} elseif (!$diff) {// 5留双$mod = bcmod($value_power_int, 2, 0);if ($mod == 1) {// 正数留双$value_power_int = bcadd($value_power_int, 1);} elseif ($mod == -1) {// 负数留双$value_power_int = bcadd($value_power_int, -1);}} else {//舍}return bcdiv($value_power_int, bcpow(10, $len), $len);
}echo '保留0位小数-整数';
echo '
0.00 ≈ '.my_round(0.00, 0); echo '
1.49 ≈ '.my_round(1.49, 0); echo '
1.500000 ≈ '.my_round(1.500000, 0); echo '
1.500001 ≈ '.my_round(1.500001, 0); echo '
1.6 ≈ '.my_round(1.6, 0); echo '
2.49 ≈ '.my_round(2.49, 0); echo '
2.500000 ≈ '.my_round(2.500000, 0); echo '
2.500001 ≈ '.my_round(2.500001, 0); echo '
2.59 ≈ '.my_round(2.59, 0); echo '
2.6 ≈ '.my_round(2.6, 0); echo '
-1.49 ≈ '.my_round(-1.49, 0); echo '
-1.500000 ≈ '.my_round(-1.500000, 0); echo '
-1.500001 ≈ '.my_round(-1.500001, 0); echo '
-1.6 ≈ '.my_round(-1.6, 0); echo '
-2.49 ≈ '.my_round(-2.49, 0); echo '
-2.500000 ≈ '.my_round(-2.500000, 0); echo '
-2.500001 ≈ '.my_round(-2.500001, 0); echo '
-2.59 ≈ '.my_round(-2.59, 0); echo '
-2.6 ≈ '.my_round(-2.6, 0);echo '

保留1位小数'; echo '
0.00 ≈ '.my_round(0.00, 1); echo '
0.149 ≈ '.my_round(0.149, 1); echo '
0.1500000 ≈ '.my_round(0.1500000, 1); echo '
0.1500001 ≈ '.my_round(0.1500001, 1); echo '
0.16 ≈ '.my_round(0.16, 1); echo '
0.249 ≈ '.my_round(0.249, 1); echo '
0.2500000 ≈ '.my_round(0.2500000, 1); echo '
0.2500001 ≈ '.my_round(0.2500001, 1); echo '
0.259 ≈ '.my_round(0.259, 1); echo '
0.26 ≈ '.my_round(0.26, 1); echo '
-0.149 ≈ '.my_round(-0.149, 1); echo '
-0.1500000 ≈ '.my_round(-0.1500000, 1); echo '
-0.1500001 ≈ '.my_round(-0.1500001, 1); echo '
-0.16 ≈ '.my_round(-0.16, 1); echo '
-0.249 ≈ '.my_round(-0.249, 1); echo '
-0.2500000 ≈ '.my_round(-0.2500000, 1); echo '
-0.2500001 ≈ '.my_round(-0.2500001, 1); echo '
-0.259 ≈ '.my_round(-0.259, 1); echo '
-0.26 ≈ '.my_round(-0.26, 1);// echo '

保留到百位'; echo '
3550 ≈ '.my_round(3550, -2); echo '
3650 ≈ '.my_round(3650, -2);


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部