$num=3.545;
$precision=2;
1、php保留兩位小數並且四舍五入,代碼如下:
round($num, $precision)
2、php保留兩位小數並且不四舍五入,代碼如下
sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -1))
3、四舍六入五成雙(銀行家舍入)
說明:四舍六入五成雙(四舍六入五考慮,五后非零就進一,五后為零看奇偶,五前為偶應舍去,五前為奇要進一)
function round3() {
$num=3.5551;
$precision=2;
$pow = pow(10, $precision);
//判斷不進1的情況(五后為0且為奇)
if((floor($num * $pow * 10) % 5 == 0) && (floor( $num * $pow * 10) == $num * $pow * 10) && (floor($num * $pow) % 2 ==0) ){
$round = floor($num * $pow) / $pow;
} else {
$round = round($num, $precision);
}
return $round;
}
接下來看看這這幾種的區別
銀行家舍入:
五后非零就進一
echo round3(3.5551,3); ===> 3.56
五后為零看奇偶,五前為偶應舍去,五前為奇要進一
echo round3(3.545,2); ===> 3.54
echo round3(3.5451,2); ===> 3.55
echo round3(3.555,2); ===> 3.56
round函數:
round(3.545,2); ===> 3.55
round(3.5451,2); ===> 3.55