테스트 사이트 - 개발 중인 베타 버전입니다

상품가격 반올림 질문드려요. 채택완료

이야기들 11년 전 조회 5,149

update g5_shop_item set it_price= truncate(it_price * 0.97, 0)

 

이렇게 해서 상품가격을 3% 낮췄습니다.

 

그런데 1원 단위까지 표시가 되네요.

 

1)

19,206원 이렇게요 금액을 100원 단위로 19,300원 이렇게 반올림 하고 싶습니다.

 

------------------------------------------------------------------

 

이렇게 질문을 드렸었는데요.

 

답변이...

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=10600" target="_blank">http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=10600" target="_blank">http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=10600

이렇게 답변이 달아 주셨습니다.

 

그렇데 위 링크를 가셔 적용하려고 해도 적용 방법을 모르겠어요 ㅠㅠ

 

[링크내용]

 

1번째 방법

 

2번째 방법

php에서는 round함수 자체에 자릿수 설정기능이 있죠. round(123.456) -> 123 round(123.456, 1) -> 123.5 round(123.456, 2) -> 123.46 round(123.456, -1) -> 120 round(123.456, -2) -> 100 이런 식이죠.. 하지만 자바스크립트에는 Math.round 함수가 있지만 아마 자릿수 설정은 안 될겁니다. 약간 변형해서 php의 round함수처럼 쓴다면 이렇게 하면 되지 않을까 생각해요. 아래에서 num은 반올림시킬 숫자이고 round_num은 반올림할 자릿수입니다. function my_round(num, round_num){ // 반올림할 위치와 소숫점을 맞추기 위해 숫자를 알맞게 가공 tmp_num1=num*Math.pow(10, round_num); // 가공된 숫자를 반올림 tmp_num2=Math.round(tmp_num1); // 역순으로 다시 가공 result=tmp_num2/Math.pow(10, round_num); return result; } 이 함수를 사용할 때는 php와 비슷하게 my_round(123.456, 2); -> 123.46 이 나오겠죠? my_round(6980, -2); -> 7000 이 나오겠죠? 이런 식으로 쓰면 되겠네요. 참고로 Math.round() 는 반올림 함수, Math.pow() 는 제곱함수입니다.

 

-----------------------------------------------------------

 

이해가 가지 않네요.

 

고수님들의 자세한 적용방법 부탁드립니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
11년 전

음... 질문자님 의도에 맞추어 답변을 드리면 

update g5_shop_item set it_price= Ceil(it_price * 0.97 / 100)*100

 

이렇게 하시면 됩니다. 결국 다른 답변자들이 하신 답변이랑 원리는 같은데 mysql에서 할수도 있고 자바스크립트에서도 할수도 있고 php에서 할수도 있지만, mysql에 관한 질문인것같네요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

11년 전

위 소스에도 php형태로 있네요. 자스에서도 아이디어는 똑같죠.

 

예를 들어 가격이 19206 인데 반올림해 19300 이 되려면

 

var a = 19206;

var b = Math.ceil(a/100) * 100; //가격을 100으로 나눠 올리고, 그값에 다시 100을 곱하면 됩니다.

 

alert(b); //결과: 19300

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인