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 */

61. pfmNumGetErrorMsg

Number 유틸리티를 사용하는 중 에러가 발생하면 에러 메시지를 반환한다.

  • 프로토타입

    char* pfmNumGetErrorMsg(void);
  • 반환값

    해당 에러 메시지를 반환한다.

  • 예제

    rc = pfmNumAdd(&a, b, c);
    if(rc != RC_NRM) {
       PFM_ERR(“%s”, pfmNumGetErrorMsg());
       /* 또는 PFM_ERR(“%s”, pfmUtilGetErrorMsg()); */
       return RC_ERR;
    }