반응형
목차
문제
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라는 변수에 할당이 됐다.
반응형
'코딩 > Java' 카테고리의 다른 글
자바 - 변수의 데이터 타입 확인 방법 (0) | 2024.04.20 |
---|---|
자바 - 형변환 에러 이유 "incompatible types: possible lossy conversion from int to byte" (0) | 2024.03.31 |
자바 - 변수에 숫자 값 할당 시 가독성 높이는 법 (int a = 1,000,000 가능?) (0) | 2024.03.24 |
Java - Switch 문 꿀팁 (중복 코드 간결화) (1) | 2023.12.02 |
자바 - 문자열 속 따옴표 ("), 역슬래시 (\) 출력 방법 (0) | 2023.11.22 |