자바 문자열 실수 변환 - jaba munjayeol silsu byeonhwan

스폰서 링크

숫자 123 과 문자열 "123"은 다릅니다.

숫자 123에 1을 더하면 124 가 되지만, 문자열 "123"에 1을 더하면 "1231"이 되어 버립니다.

따라서 문자열로 된 숫자가 숫자 구실을 하도록 하려면, 그 문자열을 숫자로 변환해 주어야 합니다.

문자로 된 숫자를, 진짜 숫자로 변환 예제

소스 파일명: Foo.java

public class Foo {
  public static void main(String args[]) {

    String s = "1000";                      // 문자열 정의

    int i = Integer.parseInt(s) + 1;        // 32비트 정수로 그리고 1을 더하기
    System.out.println(i);                  // 출력: 1001

    long L = Long.parseLong(s) + 1;         // 64비트 정수로 그리고 1을 더하기
    System.out.println(L);                  // 출력: 1001

    float f = Float.parseFloat(s) + 1.0F;   // 32비트 실수로 그리고 1을 더하기
    System.out.println(f);                  // 출력: 1001.0

    double d = Double.parseDouble(s) + 1.0; // 64비트 실수로 그리고 1을 더하기
    System.out.println(d);                  // 출력: 1001.0

  }
}

전화 번호나 주민등록번호 등도 실은 숫자가 아니라 문자열입니다. 왜냐하면 전화번호에 1을 더하거나 하는 사칙연산을 해 봐도 아무 의미가 없기 때문입니다. 물론 더해지지도 않겠지요.

에러 처리


public class Foo {
  public static void main(String args[]) {

    String s = "1000.0";                      // 문자열 정의

    try {
      int i = Integer.parseInt(s) + 1;        // 32비트 정수로 그리고 1을 더하기
      System.out.println(i);
    } catch (NumberFormatException nfe) {
      System.err.println(nfe);
      System.exit(1);
    }

    // 에러: java.lang.NumberFormatException: For input string: "1000.0"

  }
}

소수점이 있는 문자열 "1000.0" 을, 정수로 변환하려 했기에 에러가 났습니다. 숫자로 변환할 수 없는 경우에는 NumberFormatException 이 발생합니다.

"문자로 된 숫자"에, 소수점이 있을 수도 있고 없을 수도 있는 경우에는, 다음과 같은 방법으로 이 문제를 해결할 수 있습니다.

public class Foo {
  public static void main(String args[]) {

    String s = "1000.539";                    // 문자열 정의

    int i = (int) Double.parseDouble(s) + 1;  // 실수로 변환 후, 정수로 캐스팅, 그리고 1을 더하기
    System.out.println(i);

  }
}

소수점이 있든 없든 아무 숫자로 된 문자열을, 정수 숫자로 변환하기 위해서는 위의 방법을 쓰면 됩니다.
우선 가장 "통이 큰" 숫자형인 Double 로 변환한 후, 그것을 최종적으로 정수로 변환하려면 (int) 이렇게 정수로 캐스팅을 해 줍니다. 다만 정수의 표현 범위를 넘어서는 숫자라면, 최종적인 정수의 값은 -2147483648 이렇게 되어 버립니다.

즉, parseInt() 는 "1000.0" 이런 실수 형식의 문자열을 받지 못하지만

parseDouble() 은 아무 형식이든 받을 수 있습니다.

▶▶ 자바,Java] 숫자를 문자열로 변환, 정수/실수 문자로; Number to String

▶▶ Java/자바] 16진수 문자열을 정수로 변환 계산; 십육진수 헥사(Hex) 문자열을 정수로

더 읽기:

자바 | Java 프로그래밍

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.

블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면

자바 문자열 실수 변환 - jaba munjayeol silsu byeonhwan
주소를 리더기에 등록하시면 됩니다.

[java/spring] 문자열을 실수로 변경하는 방법 / parse string to float 

java 에서

특정 문자열

정수 혹은 실수로 변환해야 하는 경우가 많습니다.

그중에서

실수로 변환해야 하는 경우에는 아래와 같은 방법으로 하시면 됩니다.

우선 아래와 같은 문자열이 있다고 가정하고,

String str = "1.1";

실수로 변환하려면 아래처럼 

Float class 의 valueOf 를 이용하시면 됩니다.

float num = Float.valueOf(str)

그러면 결과는 실수로 1.1 이 나오게 됩니다!

참고들 하세요!

안녕하세요

자바 프로그래밍을 하다 보면 String으로 되어있는 변수를 숫자로 변환해서 계산을 실행하는 경우

정수로 되어있는 숫자를 실수로 변경해서 계산해야 하는 등 여러 상황에서 형 변환을 해서 구해야 할 때가 많습니다

프로그래밍을 시작한 지 얼마 안 되신 분이라면 가끔 어떻게 사용하는지 까먹을 때가 있습니다

개발을 많이 했어도 가끔 생각이 안 나서 멈칫 할때가 있네요 ㅎㄷㄷ;;

이번 포스팅에서는 자바의 형 변환(문자형, 정수형, 실수형) 방법에 대해서 알아보겠습니다

목차

문자형 -> 숫자
숫자 -> 문자형
정수 <-> 실수


문자형 -> 숫자

문자열을 숫자(정수, 실수)로 변경하는 방법입니다

String -> Int

아마 프로그래밍을 하는 분들이라면 가장 많이 사용하실 겁니다

다양한 곳에서 사용되는 String을 Int로 변환하는 방법입니다!!

Integer.parseInt(String값);

Integer.valueOf(String값);

을 사용하여 변환할 수 있습니다

String str = "100";
System.out.println(Integer.parseInt(str));
System.out.print(Integer.valueOf(str));

String -> Double, Float

String -> Int보다는 많이 사용하지 않지만 그래도 어느 정도 사용하는 double과 float의 변환 방법입니다

valueOf와 parse를 사용하여 double과 float를 변환해줍니다

Double.valueOf(String값); Double.parseDouble(String값);

Float.valueOf(String값); Float.parseFloat(String값);

을 사용해서 변환할 수 있습니다

String str = "100";
System.out.println(Double.valueOf(str));
System.out.println(Double.parseDouble(str));
System.out.println(Float.valueOf(str));
System.out.println(Float.parseFloat(str));

String -> Long, Short

자주 쓰지 않는 Long과 Short이지만 그래도 한 번 사용법을 적어봅니다

마찬가지로 valueOf와 parse를 사용하여 변환할 수 있습니다

String str = "100";
System.out.println(Long.valueOf(str));
System.out.println(Long.parseLong(str));
System.out.println(Short.valueOf(str));
System.out.println(Short.parseShort(str));

아래는 전체 코드 및 결과 화면입니다

전체 코드

public class CastingSI {
	public static void main(String[] args)  {	
		String str = "100";
		// String -> Int
		System.out.println("String -> Int : " + Integer.parseInt(str));
		System.out.println("String -> Int : " + Integer.valueOf(str));

		// String -> Double
		System.out.println("String -> Double : " + Double.valueOf(str));
		System.out.println("String -> Double : " + Double.parseDouble(str));
		// String -> Float
		System.out.println("String -> Float : " + Float.valueOf(str));
		System.out.println("String -> Float : " + Float.parseFloat(str));

		// String -> Long
		System.out.println("String -> Long : " + Long.valueOf(str));
		System.out.println("String -> Long : " + Long.parseLong(str));
		// String -> Short
		System.out.println("String -> Short : " + Short.valueOf(str));
		System.out.println("String -> Short : " + Short.parseShort(str));
	}
}

결과 화면

아래는 위의 코드를 실행한 결과 화면입니다

자바 문자열 실수 변환 - jaba munjayeol silsu byeonhwan

숫자 -> 문자형

숫자(정수, 실수)를 문자열로 변경하는 방법입니다

Int -> String

개발을 하다 보면 숫자에서 문자형으로 전환되는 경우 가장 많이 사용할 방법입니다

String.valueOf(int값);

Integer.toString(int값);

을 사용하여 변경할 수 있습니다

int i = 100;
System.out.println(String.valueOf(i));
System.out.println(Integer.toString(i));

Double, Float -> String

실수형을 String으로 변환하는 방법입니다

Int형을 String으로 변환하는 방법만큼 많이 사용하는 방법일 겁니다

String.valueOf(double값); String.valoue(float값);

Double.toString(double값); Float.toString(float값);

을 사용하여 실수형을 String으로 변환합니다

double d = 100.10;
System.out.println(String.valueOf(d));
System.out.println(Double.toString(d));
float f = 100.10f;
System.out.println(String.valueOf(f));
System.out.println(Float.toString(f));

Long, Short -> String

마지막으로 잘 사용하지 않는 방법이지만 Long, Short를 String으로 변환하는 방법입니다

위에 String -> Long, Short로 변경하는 방법을 추가했기 때문에 이 방법을 추가합니다

String.valueOf(Long값); Long.toString(Long값);

String.valueOf(Short값); Short.toString(Short값);

을 사용하여 Long과 Short를 변환합니다

Long l = 100l;
System.out.println(String.valueOf(l));
System.out.println(Long.toString(l));
Short s = 100;
System.out.println(String.valueOf(s));
System.out.println(Short.toString(s));

여기까지 숫자를 문자형으로 변환하는 방법에 대해서 알아봤습니다

전체 코드와 결과 값을 확인해보겠습니다!

전체 코드

public class CastingSI2 {
	public static void main(String[] args)  {	
		int i = 100;
		// Int -> String
		System.out.println("Int -> String : " + String.valueOf(i));
		System.out.println("Int -> String : " + Integer.toString(i));

		// Double -> String
		double d = 100.10;
		System.out.println("Double -> String : " + String.valueOf(d));
		System.out.println("Double -> String : " + Double.toString(d));
		// Float -> String
		float f = 100.10f;
		System.out.println("Float -> String : " + String.valueOf(f));
		System.out.println("Float -> String : " + Float.toString(f));

		// Long -> String
		Long l = 100l;
		System.out.println("Long -> String : " + String.valueOf(l));
		System.out.println("Long -> String : " + Long.toString(l));
		// Short -> String
		Short s = 100;
		System.out.println("Short -> String : " + String.valueOf(s));
		System.out.println("Short -> String : " + Short.toString(s));
	}
}

결과 화면

위의 전체 코드를 실행한 화면입니다

자바 문자열 실수 변환 - jaba munjayeol silsu byeonhwan

정수 <-> 실수

정수를 실수로 변환, 실수를 정수로 변환하는 방법입니다

Int -> Double, Float

Int를 Double와 Float로 변환하는 방법입니다

간단하게 앞에 (double)와 (float)를 붙여서 캐스팅을 해줍니다

int i = 100;
System.out.println(((double) i));
System.out.println(((float) i));

Double, Float -> Int

Double과 Float를 변환하는 방법입니다

double은 (int)를 사용하여 캐스팅을 하면 됩니다

실수로 캐스팅하는 경우 정수 외의 나머지 부분은 버림 처리를 합니다

float의 경우 예전에는 (int)를 사용하여 캐스팅을 하는 게 됐었던 것 같았는데 지금은 막힌 것 같습니다

float로 캐스팅하기 위해서는 Math메서드를 사용하여 반올림, 올림, 내림을 사용하여 정수형으로 바꾼 후 캐스팅을 해야 오류 없이 변환이 가능합니다

double d = 100.50;
Float f = 100.50f;
System.out.println("Double -> Int : " + ((int) d));
System.out.println("Float -> Int : " + ((int) Math.round(f)));

이제 전체 코드와 결과 화면을 통해서 어떻게 출력되는지 알아보겠습니다!

전체 코드

public class CastingSI3 {
	public static void main(String[] args)  {	
		// Int -> Double, Float
		int i = 100;
		System.out.println("Int -> Double : " + ((double) i));
		System.out.println("Int -> Float : " + ((float) i));

		// Double, Float -> Int
		double d = 100.50;
		Float f = 100.50f;
		System.out.println("Double -> Int : " + ((int) d));
		System.out.println("Float -> Int : " + ((int) Math.round(f)));
	}
}

결과 화면

double에서 int로 형 변환을 하는 경우 자동으로 버림 처리하는 것을 확인할 수 있습니다

자바 문자열 실수 변환 - jaba munjayeol silsu byeonhwan

여기까지 JAVA에서 문자형, 정수형, 실수형의 형 변환 방법에 대해서 알아봤습니다!

형 변환에 대해서 공부를 하는 개발자분들, 형 변환 방법이 갑자기 생각이 안 되는 분들에게 제 글이 도움이 되셨으면 좋겠습니다