티스토리 뷰
반응형
1. 강제 타입 변환 시 안전하게 값을 보존될 수 있도록 검사하는 방법
// 강제 타입 변환으로 인한 데이터 손실을 발생되지 않도록 함
public class CheckValueBeforeCasting {
public static void main(String[] args) {
int i = 129;
if((i<Byte.MIN_VALUE) || (i>Byte.MAX_VALUE)) { //(i<-128)||(i>127)
System.out.println("byte 타입으로 변환할 수 없습니다.");
System.out.println("값을 다시 확인해주세요.");
} else {
byte b = (byte) i;
System.out.println(b);
}
}
}
※ 기본 타입의 최대값, 최소값 상수 (boolean, char 제외)
기본 타입 | 최대값상수 | 최소값상수 |
byte | Byte.MAX_VALUE | Byte.MIN_VALUE |
short | Short.MAX_VALUE | Short.MIN_VALUE |
int | Integer.MAX_VALUE | Integer.MIN_VALUE |
long | Long.MAX_VALUE | Long.MIN_VALUE |
float | Float.MAX_VALUE | Float.MIN_VALUE |
double | Double.MAX_VALUE | Double.MIN_VALUE |
2. 정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피하는 방법
//정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피
public class FromIntToDouble {
public static void main(String[] args) {
int num1 = 123456780;
int num2 = 123456780;
float num3 = num2;
num2 = (int) num3;
int result = num1 - num2;
System.out.println(result); //-4
/*
* int 값을 손실 없이 float 타입의 값으로 변환하려면 가수 23비트로 표현가능한
* 123456780 값은 23비트로 표현할수 없음
* 그렇기 때문에 float 값을 다시 int 타입으로 변환하면 원래의 int값을 얻지 못함
*
* 해결책은 모든 int값을 실수 타입으로 안전하게 변환시키는 double타입을 사용하는 것
*
* float : 부호(1비트) + 지수(8비트) + 가수(23비트)
* double : 부호(1비트) + 지수(11비트) + 가수(52비트)
*/
int num4 = 123456780;
int num5 = 123456780;
double num6 = num5;
num5 = (int) num6;
int result2 = num4 - num5;
System.out.println(result2);
}
}
* 도서 '이것이 자바다' 참조
반응형
'JAVA > JAVA' 카테고리의 다른 글
[JAVA] 패키지 (0) | 2021.12.02 |
---|---|
[JAVA] 데이터 타입 분류 (0) | 2021.10.05 |
[JAVA] 데이터 타입 - 기본(원시:primitive) 타입 (0) | 2021.09.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스타트 스피링 부트
- 프로시저
- Java
- 모던 웹을 위한 JavaScript jQuery 입문
- 강제 타입 변환
- 스타트 스프링 부트
- 스프링부트 퀵스타트
- 손에 잡히는 10분 SQL
- Linux
- MSSQL
- 스프링부트 퀵스타터
- JavaScript
- springboot
- 자바
- JAVA 기본기 다지기 프로젝트
- 리눅스
- 배워서 바로 쓰는 스프링 부트 2
- 모던 웹을 위한 JavaScript + jQuery 입문
- 자바스크립트&제이쿼리
- MSSQL 기본에서 실무까지
- 스프링부트퀵스타트
- MS SQL Server 기본에서 실무까지
- MSSQL Server 기본에서 실무까지
- 모든 웹을 위한 JavaScript jQuery 입문
- Python
- Vue.js
- 처음 배우는 스프링 부트2
- 스프링부트 퀵 스타트
- 스프링 부트 퀵스타트
- 리액트를 다루는 기술
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함