블로그 이미지
매몰

모바일 어플리케이션 개발 1인 기업 고영진모바일입니다. 저와 함께 맛깔스러운 앱을 만들어 보아요~

Rss feed Tistory
개발/php, javascript 2018.11.26 10:09

round()를 5의 배수로도 반올림 해보자



왜 반올림은 0으로만 할까?

0말고 다른수로도 반올림 해보는건 어떨까?


라는 생각을 가끔씩 해봤는데.. 솔직히 별 필요성을 느끼지 못했었다.

그런데 주식 관련한 로보어드바이저를 만들면서 필요해졌다. 호가를 찍을때 5단위가 되기 때문이다.


아래와 같이 php의 반올림 함수인 round()를 이용하여 5의 배수로 반올림 해주는 코드를 짜봤다.


원리는 굳이 설명안해도 될만큼 간단하다. 여기서 볼것은 round() 함수의 두번째 인수인 반올림 자릿수도 고려한다는 사실이다. 이러한 편리한 기능은 살려놔야 코딩하는 재미가 있다ㅎㅎ




function roundCenter($price, $precision) {

//지정한 자릿수로 반올림 (1)

$round = round($price, $precision);

//지정한 자릿수 이하가 5가 되도록 변경 (2)

$square = -$precision;

$digit = pow(10, $square);

$center = (floor($price / $digit) * $digit) + (5 * pow(10, $square -1));

//(1)과 (2)를 원래 숫자와 비교하여 더 가까운 것을 택함

return abs($price - $round) < abs($price - $center) ? $round : $center;

}




결과값으로 검증해 보자...


echo roundCenter(573424.2517, 3).'<br />';

echo roundCenter(573424.2517, 2).'<br />';

echo roundCenter(573424.2517, 1).'<br />';

echo roundCenter(573424.2517, 0).'<br />';

echo roundCenter(573424.2517, -1).'<br />';

echo roundCenter(573424.2517, -2).'<br />';

echo roundCenter(573424.2517, -3).'<br />';




출력...


573424.2515
573424.25
573424.25
573424.5
573425
573400
573500




위에서 보듯이 지정 자릿수가 3이면 소수점 3째짜리까지 나오거나 소수점 4째자리가 5인 수가 나온다.




수제앱장인


 

 

CEO

Developer

S/W Enginner

고영진


실패만 하고 있어도 꿈을 포기하지 않는 남자
제가 직접 경험하고 습득한 지식을 위주로 올릴게요

사업자 정보 표시
고영진모바일 | 고영진 | 서울특별시 관악구 낙성대동 서울대연구공원 SK상생혁신센터 | 사업자 등록번호 : 109-11-82076 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2010-서울강서-0217호 | 사이버몰의 이용약관 바로가기
TOTAL 69,579 TODAY 8