numericHelper.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. String.prototype.setAmountToKorean = setAmountToKorean;
  2. String.prototype.isNumber = isNumber;
  3. String.prototype.isFloat = isFloat;
  4. String.prototype.getRound = getRound;
  5. String.prototype.getTruncate = getTruncate;
  6. /**
  7. * @---------------------------------------------------
  8. * @desc : 금액을 한글로 변환 (단위포함)
  9. * @param : N/A
  10. * @return : String - 단위를 포함한 한글String으로 반환
  11. * @---------------------------------------------------
  12. */
  13. function setAmountToKorean()
  14. {
  15. var amountTmp = this; // Parameter로 받은 값
  16. var amount = ""; // Convert할 값
  17. var rtnAmt = ""; // 전체 CONV된 한글 값
  18. var amtKor = ""; // 각 단위별 CONV된 한글 값
  19. var flag = "N"; // 만단위 이상 FLAG값
  20. var amtLength = amountTmp.length;
  21. var fstChar = "";
  22. for(i=0; i < amtLength ;i++) {
  23. fstChar = amountTmp.substring(i,i+1);
  24. if('0' <= fstChar && '9' >= fstChar) {
  25. amount = amount.concat(fstChar);
  26. }
  27. }
  28. amtLength = amount.length; // Parameter로 받은 값의 길이
  29. for(i=1; i<=amtLength ;i++) {
  30. var amtEng = (amount.substring(amtLength-i,amtLength)).substring(0,1);
  31. switch(amtEng) {
  32. case '1':
  33. amtKor = "일";
  34. break;
  35. case '2':
  36. amtKor = "이";
  37. break;
  38. case '3':
  39. amtKor = "삼";
  40. break;
  41. case '4':
  42. amtKor = "사";
  43. break;
  44. case '5':
  45. amtKor = "오";
  46. break;
  47. case '6':
  48. amtKor = "육";
  49. break;
  50. case '7':
  51. amtKor = "칠";
  52. break;
  53. case '8':
  54. amtKor = "팔";
  55. break;
  56. case '9':
  57. amtKor = "구";
  58. break;
  59. case '0':
  60. continue;
  61. default:
  62. continue;
  63. }
  64. if(i==1) {
  65. rtnAmt = amtKor;
  66. } else {
  67. switch((i-1)%4) {
  68. case 1:
  69. amtKor = amtKor.concat("십");
  70. break;
  71. case 2:
  72. amtKor = amtKor.concat("백");
  73. break;
  74. case 3:
  75. amtKor = amtKor.concat("천");
  76. break;
  77. case 0:
  78. default:
  79. break;
  80. }
  81. if( i>4 && i<9 && flag!='M') {
  82. amtKor = amtKor.concat("만");
  83. flag = 'M';
  84. }
  85. if( i>8 && i<13 && flag!='U') {
  86. amtKor = amtKor.concat("억");
  87. flag = 'U';
  88. }
  89. if( i>12 && flag!='J') {
  90. amtKor = amtKor.concat("조");
  91. flag = 'J';
  92. }
  93. rtnAmt = amtKor.concat(rtnAmt);
  94. }
  95. }
  96. return rtnAmt;
  97. }
  98. /**
  99. * @---------------------------------------------------
  100. * @desc : 저장된 값이 Number 형인지 점검
  101. * @param : N/A
  102. * @return : true/false
  103. * @---------------------------------------------------
  104. */
  105. function isNumber()
  106. {
  107. if( typeof( this ) == "undefined" ) return false;
  108. if( this.length == 0 ) return false;
  109. var thisSting = this.toString();
  110. for( var i=0; i < thisSting.length; i++ ){
  111. var thisNumber = thisSting.substring( i, i+1 );
  112. // 숫자가 아니면 FALSE 리턴
  113. if( isNaN( thisNumber ) ) return false;
  114. // 공백이면 FALSE 리턴
  115. if( " " == thisNumber ) return false;
  116. }
  117. return true;
  118. }
  119. /**
  120. * @---------------------------------------------------
  121. * @desc : 저장된 값이 Float 형인지 점검
  122. * @param : N/A
  123. * @return : true/false
  124. * @---------------------------------------------------
  125. */
  126. function isFloat()
  127. {
  128. // 파라미터 값이 parseFloat()후에도 같으면 TRUE 리턴
  129. return ( this == parseFloat( this ) ) ? true : false;
  130. }
  131. /**
  132. * @---------------------------------------------------
  133. * @desc : 저장된 값을 지정한 자리에서 올림/반올림/버림 처리
  134. * @param : position - 올림/반올림/버림 할 위치(2:10자리, 1:1자리, -1:소수점이하 첫째자리)
  135. * @param : mode - UP:올림, HALF_UP:반올림, DOWN:버림
  136. * @return : Number
  137. * @---------------------------------------------------
  138. */
  139. function getRound( position, mode )
  140. {
  141. // 파라미터 값을 수치화 하여 변수에 저장
  142. var valueNumber = parseFloat(this);
  143. // 소수점을 기준으로 숫자들만 취하여 배열 변수에 저장
  144. var tempArray = this.toString().setReplaceWord("-", "").split(".");
  145. // this 가 float 형이 아니면
  146. if( !this.isFloat() )
  147. {
  148. //fAlertMessage(4, "파라미터");
  149. return "";
  150. }
  151. // position 가 float 형이 아니면
  152. if( !position.toString().isFloat() )
  153. {
  154. //fAlertMessage(4, "파라미터");
  155. return "";
  156. }
  157. // 소수점 앞에서 처리하려면
  158. if(0 < parseInt( position ))
  159. {
  160. // 소수점 이상 자리수보다 크면
  161. if( tempArray[0].length < parseInt(position) )
  162. {
  163. // 메시지 처리후 리턴
  164. //fAlertMessage(1, "올림/반올림/버림 할 위치");
  165. return "";
  166. }
  167. }
  168. // 소수점 뒤에서 처리하려면
  169. else if(0 > parseInt(position))
  170. {
  171. // 소수점 이하값이 존재하지 않거나 자리수보다 크면
  172. if(tempArray.length != 2 || tempArray[1].length < parseInt(position)*(-1))
  173. {
  174. return this;
  175. }
  176. }
  177. switch(mode){
  178. // '올림'이고
  179. case "UP" :
  180. // 소수점 앞에서 처리하려면
  181. if(0 < parseInt(position))
  182. {
  183. // 해당 자리(position)에서 올림 처리
  184. valueNumber = Math.ceil(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  185. return valueNumber;
  186. }
  187. // 소수점 뒤에서 처리하려면
  188. else if(0 > parseInt(position))
  189. {
  190. // 해당 자리(position)에서 올림 처리
  191. valueNumber = Math.ceil(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  192. return valueNumber;
  193. }
  194. else
  195. {
  196. //fAlertMessage(4, "올림자리");
  197. return "";
  198. }
  199. // '반올림'이고
  200. case "HALF_UP" :
  201. // 소수점 앞에서 처리하려면
  202. if(0 < parseInt(position))
  203. {
  204. // 해당 자리(position)에서 반올림 처리
  205. valueNumber = Math.round(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  206. return valueNumber;
  207. }
  208. // 소수점 뒤에서 처리하려면
  209. else if(0 > parseInt(position))
  210. {
  211. // 해당 자리(position)에서 반올림 처리
  212. valueNumber = Math.round(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  213. return valueNumber;
  214. }
  215. else
  216. {
  217. //fAlertMessage(4, "올림자리");
  218. return "";
  219. }
  220. // '버림'이고
  221. case "DOWN" :
  222. // 소수점 앞에서 처리하려면
  223. if(0 < parseInt(position))
  224. {
  225. // 해당 자리(position)에서 내림 처리
  226. valueNumber = Math.floor(valueNumber / Math.pow(10, position)) * Math.pow(10, position);
  227. return valueNumber;
  228. }
  229. // 소수점 뒤에서 처리하려면
  230. else if(0 > parseInt(position))
  231. {
  232. // 해당 자리(position)에서 내림 처리
  233. valueNumber = Math.floor(valueNumber * Math.pow(10, position*(-1)-1)) / Math.pow(10, position*(-1)-1);
  234. return valueNumber;
  235. }else{
  236. //fAlertMessage(4, "올림자리");
  237. return "";
  238. }
  239. // 모두 아니면
  240. default :
  241. // 메시지 처리후 리턴
  242. //fAlertMessage(1, "모드('1'/'0'/'-1')");
  243. return "";
  244. }
  245. }
  246. /**
  247. * @---------------------------------------------------
  248. * @desc : 소수점 버리고 정수형 String으로 생성 (음수인경우에도 마찬가지 음수표시는 유효)
  249. * @param : N/A
  250. * @return : Number
  251. * @---------------------------------------------------
  252. */
  253. function getTruncate()
  254. {
  255. var TempArray = new Array();
  256. TempArray = this.split(".");
  257. return TempArray[0];
  258. }
  259. /**
  260. * @---------------------------------------------------
  261. * @desc : 랜덤숫자 만들기
  262. * @param : iRange - 랜덤숫자가 발생할 범위 지정 ( 1 ~ iRange )
  263. * @return : iRange 범위에 속하는 랜덤숫자
  264. * @---------------------------------------------------
  265. */
  266. function getRandomNo( iRange )
  267. {
  268. iRnt = Math.floor( Math.random() * iRange ) + 1;
  269. return iRnt;
  270. }