상품가격 반올림 질문드려요.
본문
update g5_shop_item set it_price= truncate(it_price * 0.97, 0)
이렇게 해서 상품가격을 3% 낮췄습니다.
그런데 1원 단위까지 표시가 되네요.
1)
19,206원 이렇게요 금액을 100원 단위로 19,300원 이렇게 반올림 하고 싶습니다.
------------------------------------------------------------------
이렇게 질문을 드렸었는데요.
답변이...
이렇게 답변이 달아 주셨습니다.
그렇데 위 링크를 가셔 적용하려고 해도 적용 방법을 모르겠어요 ㅠㅠ
[링크내용]
1번째 방법
<html>
<head>
<script>
function rou(form) {
val =parseInt(form.price.value);
val=Math.round(val/100)*100;
alert(val);
}
</script>
<head>
<body>
<form>
<input type=text name=price>
<input type=button value=반올림 onclick="rou(this.form)">
</form>
<?
## php 스크립트 반올림
$res =round(6430/100)*100;
echo $res;
?>
</body>
</html>
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
음... 질문자님 의도에 맞추어 답변을 드리면
update g5_shop_item set it_price= Ceil(it_price * 0.97 / 100)*100
이렇게 하시면 됩니다. 결국 다른 답변자들이 하신 답변이랑 원리는 같은데 mysql에서 할수도 있고 자바스크립트에서도 할수도 있고 php에서 할수도 있지만, mysql에 관한 질문인것같네요
위 소스에도 php형태로 있네요. 자스에서도 아이디어는 똑같죠.
예를 들어 가격이 19206 인데 반올림해 19300 이 되려면
var a = 19206;
var b = Math.ceil(a/100) * 100; //가격을 100으로 나눠 올리고, 그값에 다시 100을 곱하면 됩니다.
alert(b); //결과: 19300