코딩/Java
자바 - float 변수에 실수 값을 그냥 넣으면 에러 나는 이유
Junoni
2023. 11. 23. 20:20
반응형
목차
문제
public class Main {
public static void main(String[] args) {
float number = 1.1;
}
}
데이터 타입이 float인 number라는 변수에 실숫값 1.1을 할당해 보자.
example.java:3: error: incompatible types: possible lossy conversion from double to float
float number = 1.1;
^
1 error
error: compilation failed
shell returned
number라는 변수의 데이터 타입이 실수(float)인데 실숫값이 할당이 안된다???
이유
위에 에러 내용을 보면, double 형태에서 float 형태로 변환 시, 데이터 손실이 일어날 수 있다고 한다.
(즉 1.1라는 값의 데이터 타입이 double인데 float 데이터 타입인 변수 number에 할당 시 데이터 손실 가능성 때문에 에러 발생)
아래 예제를 통해 실제로 1.1라는 실숫값이 double 데이터 타입인지 알아보자.
public class Main {
private static void printVariableType(float number) {
System.out.println("float");
}
private static void printVariableType(double number) {
System.out.println("double");
}
public static void main(String[] args) {
printVariableType(1.1);
}
}
printVariableType() 함수에 1.1라는 값을 인수로 넣어 호출해 보자.
만약 1.1라는 값의 데이터 타입이 float 이면 -> float을 출력.
만약 1.1라는 값의 데이터 타입이 double 이면 -> double을 출력.
double
결과: 1.1라는 값의 데이터 타입은 double이다.
정리하자면
1.1라는 실숫값을,
double 데이터 타입인 변수에 바로 할당이 가능하지만, 예: double x = 1.1;
float 데이터 타입인 변수에 할당 전, 1.1의 데이터 타입을 float으로 명시하는 조치가 필요하다.
해결책
만약 1.1라는 값을 float 데이터 타입으로 명시하고 싶으면, 값 마지막에 f를 붙이면 된다, 예: 1.1f
public class Main {
public static void main(String[] args) {
float number = 1.1f;
}
}
1.1라는 값이 float 데이터 타입으로 명시되어 정상적으로 number라는 변수에 할당이 됐다.
반응형