Number 유틸리티
본 장에서는 숫자 처리의 유틸리티에 해당하는 API를 설명한다.
1. pfmNumAssign
PfmNumber형 파라미터를 다른 PfmNumber형 파라미터에 대입한다.
-
프로토타입
long pfmNumAssign(PfmNumber *x, PfmNumber y);
-
파라미터
파라미터명 설명 *x (출력)
대입 결과 값
y (입력)
입력 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumAssign(&a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = b */
2. pfmNumToLong
PfmNumber형 파라미터를 Long형으로 변환한다.
-
프로토타입
long pfmNumToLong(long *x, PfmNumber y);
-
파라미터
파라미터명 설명 *x (출력)
Long형 변환 결과 값
y (입력)
PfmNumber형 입력 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
long num; a = PFMNUM_ONE; rc = pfmNumToLong(&num, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* num = 1 */
3. pfmNumGetFromLong
Long형 파라미터를 PfmNumber형으로 변환한다.
-
프로토타입
long pfmNumGetFromLong(PfmNumber *x, long y);
-
파라미터
파라미터명 설명 *x (출력)
PfmNumber형 변환 결과 값
y (입력)
Long형 입력 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; long num = 123; rc = pfmNumGetFromLong(&a, num); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = 123 */
4. pfmNumToDouble
PfmNumber형 파라미터를 Double형으로 변환한다.
-
프로토타입
long pfmNumToDouble(double *x, PfmNumber y);
-
파라미터
파라미터명 설명 *x (출력)
Double형 변환 결과 값
y (입력)
PfmNumber형 입력 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
double num; a = PFMNUM_ONE; rc = pfmNumToDouble(&num, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* num = 1.0 */
5. pfmNumGetFromDouble
Double형 파라미터를 PfmNumber형으로 변환한다.
-
프로토타입
long pfmNumGetFromDouble(PfmNumber *x, double y);
-
파라미터
파라미터명 설명 *x (출력)
PfmNumber형 변환 결과 값
y (입력)
Double형 입력 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; double num = 123.456; rc = pfmNumGetFromDouble(&a, num); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
6. pfmNumGetFromDouble2
Double형 파라미터를 반올림하여, PfmNumber형으로 변환한다.
-
프로토타입
long pfmNumGetFromDouble2(PfmNumber *x, double y, long precision);
-
파라미터
파라미터명 설명 *x (출력)
PfmNumber형 변환 결과 값
y (입력)
Double형 입력 값
precision
반올림 위치
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; double num = 123.456; rc = pfmNumGetFromDouble2(&a, num, 1); /* a = 123.5 */ rc = pfmNumGetFromDouble2(&a, num, -1); /* a = 120 */ if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
7. pfmNumGetFromStr
NULL 종료 문자열로 표현된 값을 PfmNumber형으로 변환한다.
-
프로토타입
long pfmNumGetFromStr(PfmNumber *x, char *str);
-
파라미터
파라미터명 설명 *x (출력)
PfmNumber형 결과 값
*str (입력)
입력 문자열
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber n1; char str[] = ”1234.56789”; rc = pfmNumGetFromStr (&n1, str); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
8. pfmNumGetFromStrn
길이 문자열을 PfmNumber형으로 변환한다.
-
프로토타입
long pfmNumGetFromStrn(PfmNumber *x, char *str, long len);
-
파라미터
파라미터명 설명 *x (출력)
PfmNumber형 결과 값
*str (입력)
입력 문자열
len(입력)
입력 문자열 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber n1; char str[] = ”1234.56789”; rc = pfmNumGetFromStrn(&n1, str, strlen(str)); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* n1 == 1234.56789 */ rc = pfmNumGetFromStrn(&n1, str, 3); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* str에서 3자만 읽어서 적용. 즉, n1 == 123 */ rc = pfmNumGetFromStrn(&n1, str, 20); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* str에서 20자만 읽으려하나 그 전에 문자열이 종료. 즉, n1 == 1234.56789 */
9. pfmNumGetStrLPadZeroN
PfmNumber형을 Char형으로 변환한 후 오른쪽 정렬을 한다. 오른쪽 정렬을 하면서 생기는 공백은 0으로 채운다.
-
프로토타입
long pfmNumGetStrLPadZeroN(char *str, PfmNumber x, long buf_size);
-
파라미터
파라미터명 설명 *str (출력)
Char형 결과 값
x (입력)
PfmNumber형 입력 값
buf_size (입력)
str의 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; char str[256]; a = PFMNUM_ONE; rc = pfmNumGetStrLPadZeroN(str, a, 5); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* str = “00001” */
10. pfmNumToStr
PfmNumber형을 Char형 문자열로 변환한다.
-
프로토타입
long pfmNumToStr (char *str, PfmNumber x);
-
파라미터
파라미터명 설명 *str (출력)
Char형 결과 값
x (입력)
PfmNumber형 입력 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; char str[256]; a = PFMNUM_ONE; rc = pfmNumToStr(str, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* str = “1” */
11. pfmNumToStrn
PfmNumber형 입력 값을 특정 길이의 Char형 문자열로 변환한다.
-
프로토타입
long pfmNumToStrn(char *str, PfmNumber x, long buf_size);
-
파라미터
파라미터명 설명 *str (출력)
Char형 결과 값
x (입력)
PfmNumber형 입력 값
buf_size (입력)
str의 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; char str[256]; a = PFMNUM_ONE; rc = pfmNumToStrn(str, a, 5); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* str = “1” */
12. pfmNumCmp
두 PfmNumber형의 값을 비교한다.
-
프로토타입
long pfmNumCmp(PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 0
x == y인 경우
양수
x > y인 경우
음수
x < y인 경우
-
예제
b = PFMNUM_ONE; if(pfmNumCmp(a, b) > 0) { PFM_DBG(”a는 1보다 큼”); return RC_NRM; }
13. pfmNumCmpAbs
두 PfmNumber형의 절댓값을 비교한다.
-
프로토타입
long pfmNumCmpAbs(PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 0
|x| == |y|인 경우
양수
|x| > |y|인 경우
음수
|x| < |y|인 경우
-
예제
rc = pfmNumGetFromStr(&b, “3.14”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } if(pfmNumCmpAbs(a, b) < 0) { PFM_DBG(”a는 원주율보다 절대 값이 작음”); }
14. pfmNumIsInteger
입력 받은 값이 정수인지를 체크한다.
-
프로토타입
pfmNumIsInteger(PfmNumber x);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터
-
반환값
반환값 설명 TRUE
입력 값이 정수인 경우
FALSE
입력 값이 정수가 아닌 경우
-
예제
PfmNumber a; if(pfmNumIsInteger(a)) { PFM_DBG(”a는 정수임”); }
15. pfmNumCmpLong
입력 받은 PfmNumber형 파라미터와 Long형 파라미터의 대소를 비교한다.
-
프로토타입
long pfmNumCmpLong(PfmNumber x, long y);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터
y (입력)
Long형 입력 파라미터
-
반환값
반환값 설명 0
x == y인 경우
양수
x > y인 경우
음수
x < y인 경우
-
예제
PfmNumber a; long b; if(pfmNumCmpLong(a, b) < 0) { PFM_DBG(”a는 b보다 작음”); return RC_NRM; }
16. pfmNumCmpStr
입력 받은 PfmNumber형 파라미터와 Char형 문자열의 대소를 비교한다.
-
프로토타입
long pfmNumCmpStr(PfmNumber x, char *str);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터
*str (입력)
비교 대상 문자열을 숫자로 변환한 값
-
반환값
반환값 설명 0
x == str인 경우
양수
x > str인 경우
음수
x < str인 경우
-
예제
PfmNumber x; char str[] = ”333”; rc = pfmNumGetFromLong(&x, 222); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } if(pfmNumCmpStr(x, str) < 0) { PFM_DBG(”x는 str보다 작음”); return RC_NRM; }
17. pfmNumCmpStrn
입력 받은 PfmNumber형 파라미터와 특정 길이의 Char형 문자열의 대소를 비교한다.
-
프로토타입
long pfmNumCmpStrn(PfmNumber x, char *str, long len);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터
*str (입력)
비교 대상인 Char형 문자열을 숫자로 변환한 값
len (입력)
비교 대상인 Char형 문자열의 길이
-
반환값
반환값 설명 0
x == str인 경우
양수
x > str인 경우
음수
x < str인 경우
-
예제
PfmNumber x; char str[] = ”333”; rc = pfmNumGetFromLong(&x, 222); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } if(pfmNumCmpStrn(x, str, strlen(str)) < 0) { PFM_DBG(”x는 y보다 작음”); return RC_NRM; }
18. pfmNumNegate
입력 받은 PfmNumber형 파라미터를 음수 처리한다. (v = -x)
-
프로토타입
long pfmNumNegate(PfmNumber *v, PfmNumber x);
-
파라미터
파라미터명 설명 *v (출력)
음수 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터
-
반환값
RC_NRM을 반환한다.
-
예제
rc = pfmNumNegate(&x, x); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* x = -x */
19. pfmNumAbs
입력 받은 PfmNumber형 파라미터를 절댓값 처리한다. (v = |x|)
-
프로토타입
long pfmNumAbs(PfmNumber *v, PfmNumber x);
-
파라미터
파라미터명 설명 *v (출력)
절댓값 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumAbs(&a, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = |a| */
20. pfmNumAdd
입력 받은 두 PfmNumber형 파라미터를 덧셈 처리한다. (v = x + y)
-
프로토타입
long pfmNumAdd(PfmNumber *v, PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
덧셈 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumAdd(&a, b, c); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = b + c */
21. pfmNumSub
입력 받은 두 PfmNumber형 파라미터를 뺄셈 처리한다. (v = x – y)
-
프로토타입
long pfmNumSub(PfmNumber *v, PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
뺄셈 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumSub(&a, b, c); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = b - c */
22. pfmNumMul
입력 받은 두 PfmNumber형 파라미터를 곱셈 처리한다. (v = x * y)
-
프로토타입
long pfmNumMul(PfmNumber *v, PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
곱셈 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumMul(&a, b, c); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = b * c */
23. pfmNumDiv
입력 받은 두 PfmNumber형 파라미터를 나눗셈 처리한다. (v = x / y)
-
프로토타입
long pfmNumDiv(PfmNumber *v, PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
나눗셈 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumDiv(&a, b, c); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = b / c */
24. pfmNumIntDiv
입력 받은 두 PfmNumber형 파라미터를 나눗셈 처리하여 결과 값을 정수로 변환한다. (v = x / y, v는 정수)
-
프로토타입
long pfmNumIntDiv(PfmNumber *v, PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
나눗셈 후 정수 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, b; rc = pfmNumGetFromLong(&a, 10); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumGetFromLong(&b, 3); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumIntDiv(&a, a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == (int)(a / b) = (int)(10 / 3) = 3, not 3.333333 */
25. pfmNumMod
입력 받은 두 PfmNumber형 파라미터를 나눗셈 처리하여 나머지 값을 계산한다. (v = x – (y * n))
-
프로토타입
long pfmNumMod(PfmNumber *v, PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
나눗셈 후 나머지 값
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, b; rc = pfmNumGetFromStr(&a, “11.000001”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumGetFromStr(&b, “4.0000001”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumMod(&a, a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == a % b = 11.000001 – 2 * 4.0000001 = 3.0000008 */
26. pfmNumModDiv
입력 받은 두 PfmNumber형 파라미터를 나눗셈 처리하여 몫과 나머지 값을 계산한다.
-
프로토타입
long pfmNumModDiv(PfmNumber *v, PfmNumber x, PfmNumber *mod, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
x를 y로 나눈 몫
*mod (출력)
x를 y로 나눈 나머지
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber x, y; PfmNumber a, b; rc = pfmNumGetFromStr(&a, “11.1”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumGetFromStr(&b, “4.01”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumModDiv(&x, &y, a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* x == 2, y == 3.08 */
27. pfmNumTruncAt
입력 값의 특정 위치 이후 숫자를 버림 처리한다.
-
프로토타입
long pfmNumTruncAt(PfmNumber *v, PfmNumber x, long pos);
-
파라미터
파라미터명 설명 *v (출력)
버림 처리 결과 값
x (입력)
PfmNumber형 입력 파라미터
pos (입력)
버림 처리할 위치
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber x; PfmNumber y; pfmNumGetFromStr(&x, “123.1561”); rc = pfmNumTruncAt(&y, x, 2); /* x == 123.15*/ pfmNumGetFromStr(&x, “123.1561”); rc = pfmNumTruncAt(&y, x, -2); /* x == 100 */ if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
28. pfmNumRoundAt
입력 값의 소수점 이하 숫자에 대해 특정 위치에서 반올림 처리한다.
-
프로토타입
long pfmNumRoundAt(PfmNumber *v, PfmNumber x, long pos);
-
파라미터
파라미터명 설명 *v (출력)
반올림 처리 후 결과 값
x (입력)
PfmNumber형 입력 파라미터
pos (입력)
반올림 처리할 위치
-
반환값
-
예제
PfmNumber x; PfmNumber y; pfmNumGetFromStr(&x, “123.1561”); rc = pfmNumRoundAt(&y, x, 2); /* x == 123.16 */ pfmNumGetFromStr(&x, “123.1561”); rc = pfmNumRoundAt(&y, x, -2); /* x == 100 */ if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
29. pfmNumTrunc
입력 값의 소수점 이하 숫자를 버림 처리한다.
-
프로토타입
long pfmNumTrunc(PfmNumber *v, PfmNumber x);
-
파라미터
파라미터명 설명 *v (출력)
소수점 버림 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, b; rc = pfmNumGetFromStr(&a, “-12.345”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumTrunc(&b, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* b == -12 */
30. pfmNumRound
입력 값의 소수점 이하 숫자를 반올림 처리한다.
-
프로토타입
long pfmNumRound(PfmNumber *v, PfmNumber x);
-
파라미터
파라미터명 설명 *v (출력)
반올림 처리한 후 결과 값
x (입력)
PfmNumber형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumGetFromStr(&a, “-12.4”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumRound(&a, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == -12 */ rc = pfmNumGetFromStr(&a, “-12.7”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumRound(&a, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == -13 */
31. pfmNumSqr
입력 값을 제곱 처리한다. (v = x2 )
-
프로토타입
long pfmNumSqr(PfmNumber *v, PfmNumber x);
-
파라미터
파라미터명 설명 *v (출력)
제곱 처리한 결과 값
x (입력)
PfmNumber형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; rc = pfmNumGetFromLong(&a, 4); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumSqr(&a, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == 16 */
32. pfmNumPower
입력 값을 y제곱 처리한다. (v = xy)
-
프로토타입
long pfmNumPower(PfmNumber *v, PfmNumber x, PfmNumber y);
-
파라미터
파라미터명 설명 *v (출력)
y제곱 처리한 후 결과 값
x (입력)
PfmNumber형 입력 파라미터 1
y (입력)
PfmNumber형 입력 파라미터 2
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, b; rc = pfmNumGetFromLong(&a, 4); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumGetFromLong (&b,3); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumPower(&a, a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == 4^3 = 64 */
33. pfmNumInc
두 입력 값을 덧셈 처리해서 한 파라미터에 결과 값을 출력한다. (x = x + y)
-
프로토타입
long pfmNumInc(PfmNumber *x, PfmNumber y);
-
파라미터
파라미터명 설명 *x (입출력)
PfmNumber형 결과 값
y (입력)
PfmNumber형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumInc(&a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = a + b*/
34. pfmNumDec
두 입력 값을 뺄셈 처리해서 한 파라미터에 결과 값을 출력한다. (x = x - y)
-
프로토타입
long pfmNumDec(PfmNumber *x, PfmNumber y);
-
파라미터
파라미터명 설명 *x (입출력)
PfmNumber형 결과 값
y (입력)
PfmNumber형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
rc = pfmNumDec(&a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a = a - b*/
35. pfmNumAddStr
문자열을 숫자로 변환하여 PfmNumber형 입력 값과 덧셈 처리한다. (v = x + str)
-
프로토타입
long pfmNumAddStr(PfmNumber *v, PfmNumber x, char *str);
-
파라미터
파라미터명 설명 *v (출력)
덧셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
덧셈할 문자열을 숫자로 변환한 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumAddStr(&v, x, str); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 41 */
36. pfmNumSubStr
문자열을 숫자로 변환하여 PfmNumber형 입력 값과 뺄셈 처리한다. (v = x - str)
-
프로토타입
long pfmNumSubStr(PfmNumber *v, PfmNumber x, char *str);
-
파라미터
파라미터명 설명 *v (출력)
뺄셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
뺄셈할 문자열을 숫자로 변환한 값
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumSubStr(&v, x, str); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 19 */
37. pfmNumMulStr
문자열을 숫자로 변환하여 PfmNumber형 입력 값과 곱셈 처리한다. (v = x * str)
-
프로토타입
long pfmNumMulStr(PfmNumber *v, PfmNumber x, char *str);
-
파라미터
파라미터명 설명 *v (출력)
곱셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
곱셈할 문자열을 숫자로 변환한 값의 포인터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumMulStr(&v, x, str); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 330 */
38. pfmNumDivString
문자열을 숫자로 변환하여 PfmNumber형 입력 값과 나눗셈 처리한다. (v = x / str)
-
프로토타입
long pfmNumDivString(PfmNumber *v, PfmNumber x, char *str);
-
파라미터
파라미터명 설명 *v (출력)
나눗셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
나눗셈할 문자열을 숫자로 변환한 값의 포인터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumDivString(&v, x, str); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 30 / 11 == 2.72727272727272727272727272727 */
39. pfmNumAddStrn
특정 길이 문자열을 숫자로 변환하여 PfmNumber형 입력 값과 덧셈 처리한다. (v = x + strn)
-
프로토타입
long pfmNumAddStrn(PfmNumber *v, PfmNumber x, char *str, long len);
-
파라미터
파라미터명 설명 *v (출력)
덧셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
덧셈할 문자열을 숫자로 변환한 값의 포인터
len
문자열의 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumAddStrn(&v, x, str, strlen(str)); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 41 */
40. pfmNumSubStrn
특정 길이 문자열을 숫자로 변환하여 PfmNumber형 입력 값과 뺄셈 처리한다. (v = x - strn)
-
프로토타입
long pfmNumSubStrn(PfmNumber *v, PfmNumber x, char *str, long len);
-
파라미터
파라미터명 설명 *v (출력)
뺄셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
뺄셈할 문자열을 숫자로 변환한 값의 포인터
len
문자열의 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumSubStrn(&v, x, str, strlen(str)); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 19 */
41. pfmNumMulStrn
특정 길이 문자열을 숫자로 변환하여 PfmNumber형 입력 값과 곱셈 처리한다. (v = x * strn)
-
프로토타입
long pfmNumMulStrn(PfmNumber *v, PfmNumber x, char *str, long len);
-
파라미터
파라미터명 설명 *v (출력)
곱셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
곱셈할 문자열을 숫자로 변환한 값의 포인터
len
문자열의 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumMulStrn(&v, x, str, strlen(str)); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 330 */
42. pfmNumDivStrn
특정 길이 문자열을 숫자로 변환하여 PfmNumber형 입력 값과 나눗셈 처리한다. (v = x / strn)
-
프로토타입
long pfmNumDivStrn(PfmNumber *v, PfmNumber x, char *str, long len);
-
파라미터
파라미터명 설명 *v (출력)
나눗셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
*str (입력)
나눗셈할 문자열을 숫자로 변환한 값의 포인터
len
문자열의 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; char str[] = “11”; PfmNumGetFromLong(&x, 30); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumDivStrn(&v, x, str, strlen(str)); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 30 / 11 == 2.72727272727272727272727272727 */
43. pfmNumAddLong
PfmNumber형 입력 값과 Long형 입력 값을 덧셈 처리한다. (v = x + y, y는 Long형)
-
프로토타입
long pfmNumAddLong(PfmNumber *v, PfmNumber x, long len);
-
파라미터
파라미터명 설명 *v (출력)
덧셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
len (입력)
Long형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; long b; rc = pfmNumAddLong(&a, a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
44. pfmNumSubLong
PfmNumber형 입력 값과 Long형 입력 값을 뺄셈 처리한다. (v = x - y, y는 Long형)
-
프로토타입
long pfmNumSubLong(PfmNumber *v, PfmNumber x, long y);
-
파라미터
파라미터명 설명 *v (출력)
뺄셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
y (입력)
Long형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; long b; rc = pfmNumSubLong(&a, a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumSubLong(&a, a, 4178); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
45. pfmNumMulLong
PfmNumber형 입력 값과 Long형 입력 값을 곱셈 처리한다. (v = x * y, y는 Long형)
-
프로토타입
long pfmNumMulLong(PfmNumber *v, PfmNumber x, long y);
-
파라미터
파라미터명 설명 *v (출력)
곱셈 결과 값
x (입력)
mNumber형 입력 파라미터
y (입력)
Long형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, b; long n; rc = pfmNumMulLong(&a, b, n); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == b * n */
46. pfmNumDivLong
PfmNumber형 입력 값과 Long형 입력 값을 나눗셈 처리한다. (v = x / y, y는 Long형)
-
프로토타입
long pfmNumDivLong(PfmNumber *v, PfmNumber x, long y);
-
파라미터
파라미터명 설명 *v (출력)
나눗셈 결과 값
x (입력)
PfmNumber형 입력 파라미터
y (입력)
Long형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, b; long n; rc = pfmNumDivLong(&a, b, n); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == b / n */
47. pfmNumModDivLong
PfmNumber형 입력 값과 Long형 입력 값을 나눗셈 처리하여 몫과 나머지 값을 계산한다.
-
프로토타입
long pfmNumModDivLong(PfmNumber *v, PfmNumber *mod, PfmNumber x, long y);
-
파라미터
파라미터명 설명 *v (출력)
x를 y로 나눈 몫
*mod (출력)
x를 y로 나눈 나머지
x (입력)
PfmNumber형 입력 파라미터
y (입력)
Long형 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber q, r, a; long b; rc = pfmNumModDivLong(&q, &r, a, b); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* a == b * q + r */
48. pfmNumAddN
입력된 값을 N번 더한다. (v = x + x +…)
-
프로토타입
long pfmNumAddN(long cnt, PfmNumber *v, PfmNumber x, …);
-
파라미터
파라미터명 설명 cnt (입력)
계산할 피연산자의 개수
*v (출력)
연산 결과 값
x (입력)
연산의 첫 번째 피연산자
… (입력)
연산의 두 번째 이후의 피연산자들
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, n; a = n = PFMNUM_ZERO; rc = pfmNumAddN(3, &n, PFMNUM_ONE, PFMNUM_ONE, PFMNUM_ONE); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* n == 1+ 1+ 1 = 3 */다음은 예제에서 사용된 상수에 대한 설명이다.
상수 설명 PFMNUM_ZERO
0을 나타내는 PfmNumber형 상수
PFMNUM_ONE
1을 나타내는 PfmNumber형 상수
49. pfmNumMulN
입력된 값을 지정된 수만큼 곱한다. (v = x * x *…)
-
프로토타입
long pfmNumMulN(long cnt, PfmNumber *v, PfmNumber x, …);
-
파라미터
파라미터명 설명 cnt (입력)
계산할 피연산자의 개수
*v (출력)
연산의 결과 값에 대한 포인터
x (입력)
연산의 첫 번째 피연산자
… (입력)
연산의 두 번째 이후의 피연산자들
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a, b, c, d, n; rc = pfmNumGetFromLong(&a, 2); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumGetFromLong(&b, 3); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = p pfmNumGetFromLong (&c, 4); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumGetFromLong (&d, 5); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumMulN(4, &n, a, b, c, d); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* n == a * b * c * d = 2 * 3 * 4 * 5 = 120 */
50. pfmNumPowLong
입력된 값을 y번 곱한다. (v = xy)
-
프로토타입
long pfmNumPowLong(PfmNumber *v, PfmNumber x, long y);
-
파라미터
파라미터명 설명 *v (출력)
연산 결과 값
x (입력)
PfmNumber형의 입력 파라미터
y (입력)
Long형의 입력 파라미터
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; PfmNumGetFromStr(&x, “2”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumPowLong(&v, x, 10); /* v = 2^10 */ if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 1024 */
51. pfmNumRound
입력된 값의 특정 소수점 자리까지 반올림 처리한다. x의 소수점 pos 자리까지 반올림 처리한 값을 v에 대입한다.(QA: 30번과 중복 함수 입니다. 확인 후 삭제 부탁드립니다.)
-
프로토타입
long pfmNumRound(PfmNumber *v, PfmNumber x, long pos);
-
파라미터
파라미터명 설명 *v (출력)
연산 결과 값
x (입력)
PfmNumber형의 입력 파라미터
pos (입력)
소수점 이후 반올림할 자리 수
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; rc = pfmNumGetFromStr(&x, “123.1561”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v = 123.16 */ rc = pfmNumRound(&v, x, 2); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
52. pfmNumRoundUp
입력된 값의 특정 소수점 자리에서 올림 처리한다. x를 소수점 pos 자리까지 올림한 값을 v에 대입한다.
-
프로토타입
long pfmNumRoundUp(PfmNumber *v, PfmNumber x, long pos);
-
파라미터
파라미터명 설명 *v (출력)
연산의 결과 값에 대한 포인터
x (입력)
PfmNumber형의 입력 파라미터
pos (입력)
소수점 이후 올림 처리할 자리수
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber v, x; rc = pfmNumGetFromStr(&x, “123.1561”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* v1 = 123.157 */ rc = pfmNumRoundUp(&v, x, 3); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; }
53. pfmNumCalc
사칙연산의 계산 결과를 PfmNumber형으로 출력한다.
-
지원하는 연산자
괄호(중복허용), 사칙연산(+, -, *, /), 제곱승(^), mod(%), 상수
-
프로토타입
long pfmNumCalc(PfmNumber *num, char *frmt, …);
-
파라미터
파라미터명 설명 *num (출력)
연산 결과 값
*frmt (입력)
데이터 타입 표현식
-
Long형 : %ld
-
문자형 : %s
-
Number형 : %n
…
*frmt 파라미터의 데이터 타입 표현식에 대응하는 데이터
-
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber num, a; long b = 2; rc = pfmNumGetFromStr(&a, “1”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumCalc(&num, “(-1 + 5 * %n) / %ld - %s”, a, b, “1”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } else { PRINT_PFMNUMBER(&num); } /* num = 1 */
54. pfmNumCalcLong
사칙연산의 계산 결과를 Long형으로 출력한다.
-
지원하는 연산자
괄호(중복허용), 사칙연산(+, -, *, /), 제곱승(^), mod(%), 상수
-
프로토타입
long pfmNumCalcLong(long *lval, char *frmt, …);
-
파라미터
파라미터명 설명 *lval (출력)
연산 결과 값
*frmt (입력)
데이터 타입 표현식
-
Long형 : %ld
-
문자형 : %s
-
Number형 : %n
…
*frmt 파라미터의 데이터 타입 표현식에 대응하는 데이터
-
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; long lval, b = 2; rc = pfmNumGetFromStr(&a, “1”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumCalcLong(&lval, “(-1 + 5 * %n) / %ld - %s”, a, b, “1”); if(rc != RC_NRM){ PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } else { PFM_DBG(“lval = %ld”, &lval); } /* lval = 1 */
55. pfmNumToCommaStrN
PfmNumber형의 숫자를 콤마가 포함된 문자열로 변환한다.
-
프로토타입
long pfmNumToCommaStrN(char *str, PfmNumber x, long buf_size);
-
파라미터
파라미터명 설명 *str (출력)
변환 후 결과 값
x (입력)
PfmNumber형의 입력 파라미터
buf_size
str의 길이
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; char str[20]= {0,}; rc = pfmNumGetFromStr(&a, “123456789.124”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumToCommaStrN(str, x, sizeof(str)); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* str = 123,456,789.124 */
56. pfmNumToInFmtStrN
PfmNumber형의 숫자를 특정 포맷의 문자열로 변환한다.
-
프로토타입
long pfmNumToInFmtStrN(char *str, long buf_size, char *frmt, long right_align_flag, long lpad_zero_flag, PfmNumber x);
-
파라미터
파라미터명 설명 *str (출력)
변환 후 문자열
buf_size (입력)
str의 길이
*frmt (입력)
변환 후의 포맷
-
‘#’ : 숫자가 있을 경우 숫자를 대입하고, 없을 경우 무시
-
‘0’ : 숫자가 있을 경우 숫자를 대입하고, 없을 경우 0을 대입
-
Number형 : %n
-
‘.’(점) : 소수점
right_align_flag (입력)
포맷 변환 후 문자열 정렬 유형
-
‘0’ : 왼쪽 정렬
-
‘1’ : 오른쪽 정렬
lpad_zero_flag (입력)
포맷 변환 후 문자열을 오른쪽 정렬할 경우 왼쪽 빈 공간 처리 유형
-
‘0’ : 빈 공간을 빈 칸으로 처리
-
‘1’ : 빈 공간을 0으로 처리
x (입력)
PfmNumber형 입력 파라미터
-
-
반환값
반환값 설명 RC_NRM
정상적으로 처리된 경우
RC_ERR
정상적으로 처리되지 않은 경우
-
예제
PfmNumber a; char str[100]= {0,}; rc = pfmNumGetFromStr(&a, “-123456789.12345”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } rc = pfmNumToInFmtStrN(str, sizeof(str), "####,###", 1, 1, a); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } /* str = -000000123456789.123 */
다음은 각 파라미터에 아래의 값을 입력했을 때 나타나는 결과의 예제이다.
| Frmt 예 | Number 값 | Buf_ size | Align Type | Lpad Type | 결과 (space는 v로 표시) |
|---|---|---|---|---|---|
#.## |
-1.12345 |
10 |
0 |
0 |
-1.12vvvvv |
0.00 |
-1.12345 |
10 |
0 |
0 |
-1.12vvvvv |
#.##### |
-1.12 |
10 |
0 |
0 |
-1.12vvvvv |
0.00000 |
-1.12 |
10 |
0 |
0 |
-1.12000vv |
##,### |
-1234567 |
10 |
0 |
0 |
-1,234,567v |
00,000 |
-1234567 |
10 |
0 |
0 |
-1,234,567v |
##,### |
-1234 |
10 |
0 |
0 |
-1,234vvvv |
00,000 |
-1234 |
10 |
0 |
0 |
-1,234vvvv |
#,###.## |
-123456789.12 |
20 |
0 |
0 |
-123,456,789.12vvvvv |
0,000.00 |
-123456789.12 |
20 |
0 |
0 |
-123,456,789.12vvvvv |
#,####.## |
-123456789.12 |
20 |
0 |
0 |
-123,456,789.12vvvvv |
0,0000.00 |
-123456789.12 |
20 |
0 |
0 |
-123,456,789.12vvvvv |
#,##,###.## |
-123456789.12 |
20 |
0 |
0 |
에러 (콤마 구분자는 일정간격만 허용) |
#.##### |
-123.12 |
20 |
1 |
0 |
vvvvvvvvvvvvv-123.12 |
0.00000 |
-123.12 |
20 |
1 |
0 |
vvvvvvvvvv-123.12000 |
#.## |
-123456789.12 |
20 |
1 |
0 |
vvvvvvv-123456789.12 |
0.00 |
-123456789.12 |
20 |
1 |
0 |
vvvvvvv-123456789.12 |
#,###.## |
-123456789.12 |
20 |
1 |
0 |
vvvvv-123,456,789.12 |
0,000.00 |
-123456789.12 |
20 |
1 |
0 |
vvvvv-123,456,789.12 |
#,###.##### |
-123456789.12 |
20 |
1 |
0 |
vvvvv-123,456,789.12 |
0,000.00000 |
-123456789.12 |
20 |
1 |
0 |
vv-123,456,789.12000 |
#,###.## |
-123456789.12 |
20 |
1 |
1 |
-00000123,456,789.12 |
0,000.00 |
-123456789.12 |
20 |
1 |
1 |
-00000123,456,789.12 |
#,###.##### |
-123456789.12 |
20 |
1 |
1 |
-00000123,456,789.12 |
0,000.00000 |
-123456789.12 |
20 |
1 |
1 |
-00123,456,789.12000 |
57. pfmNumPrint
PfmNumber형의 입력 값을 메시지용 임시 문자열로 변환한다.
|
pfmNumPrint는 PFM_DBG, PFM_ERR, snprintf 등에 숫자로 값을 넣기 위한 임시적 용도이다. 따라서 문자열로 변환한 것을 사용하기 위해서는 pfmNumToStr, pfmNumGetStrLPadZeroN, pfmNumToCommaStrN 등의 API를 이용한다. |
-
프로토타입
char* pfmNumPrint(PfmNumber x);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터
-
반환값
변환된 메시지용 임시 문자열 포인터를 반환한다.
-
예제
PfmNumber x; PfmNumGetFromStr(&x, ”-12345678.123”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } if(pfmNumCmp (x, PFMNUM_ZERO) < 0) { PFM_ERR(“음수 값이 입력되었습니다. [%s]”, pfmNumPrint(x)); return RC_ERR; } /* 메시지 내용 : “음수 값이 입력되었습니다. [-12345678.123]” */
58. pfmNumPrintComma
PfmNumber형의 입력 값을 메시지용 임시 문자열로 변환한 후 천 단위 구분자를 표시하여 반환한다.
|
pfmNumPrintComma는 PFM_DBG, PFM_ERR, snprintf 등에 숫자로 값을 넣기 위한 임시적 용도이다. 따라서 문자열로 변환한 것을 사용하기 위해서는 pfmNumToStr, pfmNumGetStrLPadZeroN, pfmNumToCommaStrN 등의 API를 이용한다. |
-
프로토타입
char* pfmNumPrintComma(PfmNumber x);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터
-
반환값
변환된 메시지용 임시 문자열 포인터를 반환한다.
-
예제
PfmNumber x; PfmNumGetFromStr(&x, ”-12345678.123”); if(rc != RC_NRM) { PFM_ERR(“%s”, pfmNumErrorMsg()); /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */ return RC_ERR; } if(pfmNumCmp (x, PFMNUM_ZERO) < 0) { PFM_ERR(“음수 값이 입력되었습니다. [%s]”, pfmNumPrintComma(x)); return RC_ERR; } /* 메시지 내용: “음수 값이 입력되었습니다. [-12,345,678.123]” */ /* 배치 프로그램에서 display 정보 조립 */ PFM_DBG(“계좌번호 [%s]의 잔액은 %s원 입니다.”, MST->acct_no, pfmNumPrintComma(MST->bal_amt));
59. pfmNumFindLocationOfLeastSignificantDigit
입력 값의 소수점 자리수를 반환한다.
-
프로토타입
long pfmNumFindLocationOfLeastSignificantDigit(PfmNumber x);
-
파라미터
파라미터명 설명 x (입력)
PfmNumber형 입력 파라미터
-
반환값
입력 값이 소수인 경우 소수점 자리수를 반환하고 정수인 경우 최초 0이 아닌 유효 숫자가 나타날 때까지의 0의 개수 * (-1)의 값을 반환한다.
-
예제
PfmNumber a; long dp; if(pfmNumGetFromStr(&a, “123.12”) != RC_NRM) { PFM_ERR(“pfmNumGetFromStr() 에러”); return RC_ERR; } dp = pfmNumFindLocationOfLeastSignificantDigit(a); /* dp = 2 */ /* --------------------------------------------- */ if(pfmNumFindLocationOfLeastSignificantDigit (amt) > 2) { PFM_ERR(“소수점 3자리 이하 입력 불허”); return RC_ERR; }다음은 각 값에 대한 결과 값을 보여주는 예이다.
Value 결과 값 321.123
3
321.12
2
321.1
1
321
0
320
-1
300
-2
0
0
60. pfmNumDump
PfmNumber형의 입력 값을 Hex 문자열로 변환한다.
-
프로토타입
char* pfmNumDump(char *buf, PfmNumber *x);
-
파라미터
파라미터명 설명 *buf (출력)
연산 결과 값
*x
PfmNumber형 입력 파라미터
-
예제
PfmNumber a; char str[100] b = {0,}; if(pfmNumGetFromStr(&a, “12”) != RC_NRM) { PFM_ERR(“pfmNumGetFromStr() 에러”); return RC_ERR; } pfmNumDump (b, &a); /* b = 02,c1,8c,64,b0,ae,00,74,5e,4e,f0,40,2b,20,09,5c,cc,ae,00,6c,e7,ae,00 */