금액을 산정하는 프로그램에서
산정금액의 천원단위이하는 절사하고 싶은데요.
예를 들어
산정금액 : 189,090원 -> 180,000원
방법을 몰라 질문하게 되었습니다.
함수나 아이디어 있으신 분들의 도움 부탁드립니다.
댓글 6
-
요요
2009.11.19 19:37
-
사니아
2009.11.19 19:39
DATA p TYPE p DECIMALS 0 VALUE '189090'.
p = TRUNC( p / 10000 ) * 10000.
WRITE p. -
안규
2009.11.19 19:40
함수는 FIMA_NUMERICAL_VALUE_ROUND 쓰시면 될 것 같고요, i_rtype 에 인풋값이 ' ', '+', '-'에 따라 반올림, 올림, 버림이 적용됩니다.
DATA: input TYPE f,
output TYPE f,
output_n(10) TYPE n.
input = '189090'.
CALL FUNCTION 'FIMA_NUMERICAL_VALUE_ROUND'
EXPORTING
i_rtype = '-'
i_runit = '10000'
i_value = input
IMPORTING
e_value_rnd = output.
output_n = output.
WRITE output_n. -
보나
2009.11.19 19:45
자리수값 내림(절삭) / 올림
DATA : num(10) TYPE p DECIMALS 3.
num = ( 13 / 5 ).
WRITE num.
num = CEIL( num ).
WRITE num.
num = TRUNC( num ).
WRITE num.
CEIL 및 TRUNC 는 F1 참조.
정수형에 대한 변환이므로 소수점 / 10단위이상의 경우 위의 안규님 리플처럼 금액에 대한 자리수 변환 / 재변환 필요
-
TT
2009.11.19 22:19
함수
'ROUND' 요것두잇습니당.
import
SIGN 에 ' ', '+', '-' 넣어주심 반올림, 올림, 버림이 됩니당.
참조하세요~
-
해바라기
2009.11.24 01:08
모두들 감사합니다~ 알려주신 방법들로 적용해보도록 하겠습니다.
함수는 잘 모르겠구요. 그냥 그때그때 맞게 편하게 씁니다. 아래는 샘플이구요.
금액이 문자형이라는 전제로 만들었습니다. 다른 방법도 다양하게 있겠죠? ^^
DATA amount TYPE c LENGTH 17 VALUE '181,790'.
DATA v_amt TYPE p .
* 절삭
SHIFT amount RIGHT UP TO ','.
CONDENSE amount NO-GAPS.
CONCATENATE amount '000' INTO amount.
* 사사오입(형변환)
TRANSLATE amount USING ', '.
CONDENSE amount NO-GAPS.
v_amt = amount.
v_amt = v_amt / 1000.
v_amt = v_amt * 1000.
WRITE v_amt TO amount.