투케이2K

258. (java/자바) [유틸 파일] Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시 - 소수점 제한 출력 본문

Java

258. (java/자바) [유틸 파일] Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시 - 소수점 제한 출력

투케이2K 2022. 4. 6. 13:48

[개발 환경 설정]

개발 툴 : Eclipse

개발 언어 : Java

 

[소스 코드]

    // TODO [Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시]
    public static String doubleCutLength(double doubleData, int length){

        /**
         * // -----------------------------------------
         * [doubleCutLength 메소드 설명]
         * // -----------------------------------------
         * 1. Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시 [반올림 없음]
         * // -----------------------------------------
         * 2. 호출 방식 :
         *   C_Util.doubleCutLength(123.4567, 2);
         *   C_Util.doubleCutLength(-123.4567, 2);
         * // -----------------------------------------
         * 3. 리턴 데이터 : 123.45 : 소수점 특정 자릿수 기준 제한 문자열 데이터
         * // -----------------------------------------
         * */

        // [리턴 데이터 변수 선언 실시]
        String result = "";

        // [인풋 데이터 체크 수행 실시]
        if (length >= 0){ // [0 자릿수 이상 들어온 경우]

            try {
                // [필요 변수 선언 실시]
                int dotCount = 0; // 점 개수
                int dotLocation = 0; // 점 위치
                int dotLength = 0; // 소수점 이하 자릿수 기준

                // [for 문을 돌면서 데이터 확인 실시]
                String strData = String.valueOf(doubleData);
                for (int i=0; i<strData.length(); i++){
                    if (strData.charAt(i) == '.'){ // 문자열 특정 자릿수가 점 (.) 인 경우
                        dotCount = dotCount + 1; // 카운트 증가
                        dotLocation = i; // 위치 지정

                        String subString = strData.substring((dotLocation + 1), strData.length());
                        dotLength = subString.length(); // 소수점 이하 자릿수 확인
                    }
                }
                /*
                Log.i("---","---");
                Log.d("//===========//","================================================");
                Log.i("","\n"+"[C_Util >> doubleCutLength() :: Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시]");
                Log.i("","\n"+"[dotCount [소수점 개수] :: "+String.valueOf(dotCount)+"]");
                Log.i("","\n"+"[dotLocation [소수점 위치] :: "+String.valueOf(dotLocation)+"]");
                Log.i("","\n"+"[dotLength [소수점 이하 자릿수] :: "+String.valueOf(dotLength)+"]");
                Log.d("//===========//","================================================");
                Log.i("---","---");
                // */

                // [정상적으로 소수점이 포함된 경우]
                if (dotCount == 1){
                    if (length > dotLength){ // [원본 데이터 보다 인풋값이 큰 경우 >> 0 값으로 채움]
                        result = strData.substring(0, strData.length());

                        int zeroCount = length - dotLength;
                        for (int j=0; j<zeroCount; j++){
                            result = result + "0";
                        }
                    }
                    else {
                        if (length == 0){
                            result = strData.substring(0, (dotLocation + length));
                        }
                        else {
                            result = strData.substring(0, (dotLocation + length + 1));
                        }
                    }
                }
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }

        // [로그 출력 실시]
        ///*
        Log.i("---","---");
        Log.d("//===========//","================================================");
        Log.i("","\n"+"[C_Util >> doubleCutLength() :: Double 소수점 데이터를 특정 소수점 자릿수 기준으로 자르기 실시]");
        Log.i("","\n"+"[input [double] :: "+String.valueOf(doubleData)+"]");
        Log.i("","\n"+"[input [length] :: "+String.valueOf(length)+"]");
        Log.i("","\n"+"[result [string] :: "+String.valueOf(result)+"]");
        Log.d("//===========//","================================================");
        Log.i("---","---");
        // */

        // [리턴 데이터 반환 실시]
        return result;
    }
 

[결과 출력]


반응형
Comments