/* @tier easy @module mg @transform msg-gateway-util */ /* * mg_cu_0007.c - 전문게이트웨이 공통 유틸리티 (plain C) [tier=easy] */ #include "mg_cu_0007.h" #include /* 수수료: 소수 2자리 스케일로 확대 후 요율 적용, 원 단위 복귀 */ long mg_cu_0007_fee(long amount, int rate_bp) { long scaled, fee; if (amount <= 0 || rate_bp < 0) return 0; scaled = amount * 100L; fee = scaled * (long)rate_bp / 10000L; return fee / 100L; } /* 단위가 2의 거듭제곱이면 비트마스크 정렬, 아니면 일반 절사 */ long mg_cu_0007_round_unit(long amount, long unit) { if (unit <= 0) return amount; if ((unit & (unit - 1)) == 0) return amount & ~(unit - 1); return (amount / unit) * unit; } /* 분류: 금액 구간 비트맵 플래그(bit0=만,bit1=십만,bit2=백만) */ int mg_cu_0007_classify(long amount) { int f = 0; if (amount >= 10000L) f |= 1; if (amount >= 100000L) f |= 2; if (amount >= 1000000L) f |= 4; return f; }