/* @tier easy @module mg @transform msg-gateway-util */ /* * mg_cu_0011.c - 전문게이트웨이 공통 유틸리티 (plain C) [tier=easy] */ #include "mg_cu_0011.h" #include /* 슬랩(구간별 고정액) 수수료 테이블 조회 */ static long mg_cu_0011_slab(long a) { static const long lim[4] = {10000L, 100000L, 1000000L, 10000000L}; static const long fixed[5] = {100L, 500L, 2000L, 8000L, 30000L}; int i; for (i = 0; i < 4; i++) if (a < lim[i]) return fixed[i]; return fixed[4]; } /* 수수료: 슬랩 고정액 + 미세 요율 가산 */ long mg_cu_0011_fee(long amount, int rate_bp) { long f; if (amount <= 0 || rate_bp < 0) return 0; f = mg_cu_0011_slab(amount); f += amount * (long)rate_bp / 100000L; return f; } /* 가장 가까운 배수(반올림, 동점은 올림) */ long mg_cu_0011_round_unit(long amount, long unit) { long q, r; if (unit <= 0) return amount; q = amount / unit; r = amount % unit; if (r * 2 >= unit) q++; return q * unit; } /* 분류: 통과한 임계 개수(0~5) */ int mg_cu_0011_classify(long amount) { static const long g[5] = {1000L, 10000L, 100000L, 1000000L, 10000000L}; int i, c = 0; for (i = 0; i < 5; i++) if (amount >= g[i]) c++; return c; }