자바(Java)/JAVA 2SE

부호가 있는 텍스트형 실수를 실수형으로 변환시키기

본클라쓰 2009. 10. 13. 16:37

부호가 있는 텍스트형 실수를 실수형으로 변환시키기 

import java.util.StringTokenizer;
import java.util.regex.Pattern;

 

public class StringFloat {
 
    public static float toFloat(String value){
  
        String sign = value.substring(0,1);
        boolean hasSign = sign.equals("+") || sign.equals("-") || sign.equals("(");
        removeComma(value);
  
        if( hasSign ) {
            if ( sign.equals("(") ) { return negative(value); }
       
            if ( sign.equals("-") ) { return Float.parseFloat(value) * -1; }
            else { return Float.parseFloat(value); }
   
        } else {
            return Float.parseFloat( value );
        }
  
    }
 
    private static String removeComma(String value) {
        String result = null;
        StringTokenizer st = new StringTokenizer(value, ",");
  
        while( st.hasMoreTokens() ) {
            result += st.nextToken();
        }
  
        return result;
  
    }
 
    private static float negative(String value) {
        String result = null;
        boolean isNumber = Pattern.matches("^.[0-9]*.$", value);
  
        if ( isNumber ) {
            result = value.substring(1);
   
            // 문자열의 마지막에 ')'기호가 있는가를 확인한 후 제거
            if ( result.substring( result.length()-1 ).equals(")") ) {
                result = result.substring(0, result.length()-1);
            }
   
        } else {
            return Float.parseFloat(value) * -1;
        }
        return Float.parseFloat(value) * -1;
    }
 
}