PHP에서 숫자를 특수 값으로 반올림 - e. g. "좋은 가격"

PHP에서 숫자를 특수 값으로 반올림 - e. g. "좋은 가격"

2022-10-19 last update

4 minutes reading web server php
때때로 숫자를 특별한 값으로 반올림해야 합니다. 상점이 있고 판매 가격을 자동으로 계산하고 싶지만 12.52 USD와 같은 가격이 마음에 들지 않을 수 있습니다.

이 문제를 해결하기 위해 다양한 방법으로 사용할 수 있는 작은 PHP 함수가 있습니다.
function round_to($number, $step = 1, $sub = 0) {
    $number += $sub; // to ensure it rounds in the correct way
    if($step == 0 || $step == 1) return round($number) - $sub;
 
    return (round($number / $step) * $step) - $sub;
}
이 작은 도우미를 사용하면 원하는 각 "좋은 값"으로 반올림할 수 있습니다.
예를 들어:
round_to(12.34, 0.5, 0.01); 결과는 12.49입니다(다음 0.5단계로 반올림하고 0.01만큼 감소)round_to(12.34, 5, 0.01); 결과는 9.99입니다(다음 5단계 값으로 반올림하고 0.01만큼 감소)round_to(10.7, 2); 결과는 10.0입니다(다음 짝수로 반올림).
물론 작은 숫자에 사용하는 것보다 큰 숫자에 대해 다른 값을 사용해야 합니다. 예를 들어 추가 if 절 사용:
$x = somenumber; // e. g. your base price
$a = $x * 1.2; // 20% margin
 
if($a < 5) $a = $a; // do nothing
elseif($a < 10) $a = round_to($a, 0.5, 0.01);
elseif($a < 50) $a = round_to($a, 1, 0.01);
elseif($a < 150) $a = round_to($a, 5, 0.01);
else $a = round_to($a, 10, 0.10);
이 예에서 판매 가격은 1.00 USD의 기본 가격에 대해 1.20 USD 기본 가격 11.00 USD에 대해 12.99 USD(11 * 1.2 = 13.20)243.34 USD(243.34 * 1.2 = 243.34 USD의 기본 가격에 대해 289.90 USD)입니다. 292.01)
"좋은 가격"으로 즐기세요 ;)