Tìm kiếm một hàm ro số tròn đến bội số gần nhất của 5nguyên Round đến bội số gần nhất của 5 trong PHP
22 -> 20
23 -> 25
40 -> 40
46 -> 45
48 -> 50
và vân vân.
Cố gắng này mà luôn luôn trả về giá trị cao hơn:
5 * ceil($n/5);
Tìm kiếm một hàm ro số tròn đến bội số gần nhất của 5nguyên Round đến bội số gần nhất của 5 trong PHP
22 -> 20
23 -> 25
40 -> 40
46 -> 45
48 -> 50
và vân vân.
Cố gắng này mà luôn luôn trả về giá trị cao hơn:
5 * ceil($n/5);
Sử dụng round()
thay vì ceil()
.
5 * round($n/5);
ceil()
làm tròn một số dấu phẩy động lên đến số nguyên tiếp theo trong chuỗi. round()
sẽ làm tròn đến số nguyên gần nhất bằng cách sử dụng các quy tắc làm tròn tiêu chuẩn.
Quay lại toán học, vì vòng làm việc với số thập phân, nhân với 5 và chia cho 10 và sau đó làm tròn, nó. Nhân với 5 lần nữa để có được những gì bạn muốn. (Other câu trả lời làm việc là tốt, chỉ là một cách khác nhau để nhìn vào nó)
function round_5($in)
{
return round(($in*2)/10)*5;
}
echo round_5(48);
Xem nếu điều này giúp
Vâng, phải đối mặt với vấn đề này trong khi giúp thực hiện một POS cho một công ty Canada, đến với điều này giải pháp, hy vọng nó sẽ giúp ai đó. (Canada đã loại bỏ đồng xu trong năm 2012). Cũng bao gồm cho việc bao gồm thuế giá, chỉ cần vượt qua '1' là argh thứ hai.
//calculate price and tax
function calctax($amt,$tax_included = NULL){
$taxa = 'tax rate 1 here';
$taxb = 'tax rate 2 here';
$taxc = ($taxa + $taxb) + 1;
if(is_null($tax_included)){
$p = $amt;
}else{
$p = number_format(round($amt/$taxc,2),2);
}
$ta = round($p * $taxa,2);
$tb = round($p * $taxb,2);
$sp = number_format(round($p+($ta + $tb),2),2);
$tp = number_format(round(($sp*2)/10,2)*5,2);
$ret = array($ta,$tb,$tp);
return $ret;
}
Hãy thử toán tử mô đun: '$ n - ($ n% 5);' nó thường là tốt nhất cho những trường hợp này. – Mahn