부동소수점
부동소수점 타입 : float , double
부동소수점 float 은 4 byte의 저장공간이 요구되며 1.4E-45 ~ 3.4028235E38 의 범위를 가진다.
소수 6번째 자리까지 정확하게 표현이 가능하다.
부동소수점 double 은 8 byte의 저장공간이 요구되고 4.9E-324 ~ 1.7976931348623157E308의 범위를 가진다. 소수 15번째 자리까지 오차없이 표현이 가능하다.
Float(Double).MIN_VALUER, Float(Double).MAX_VALUE 의 명령어로 최대,최소값 확인이 가능하다.
부동소수점 연산의 정확도는 99.9%로 완벽하지 않은 정확도를 가지고 있다.
공학계산기나 은행 입출납 시스템을 만들거나, 매우 높은 정확함이 요구되는 타이머를 만든다거나 할때 부동소수점을 사용해서는 제대로된 프로그램이 만들어지지 않을것이다.
다음 예제는 부동 소수점 방식으로 실수를 표현할 때 발생할 수 있는 오차를 보여주는 예제이다.
double num = 0.1;
for(int i = 0; i < 1000; i++) {
num += 0.1;
}
System.out.print(num);
실행결과는 0.1을 1000번 더한 합계인 100이 되어야 하지만 100.09999999999859 가 출력된다.
이처럼 컴퓨터가 실수를 가지고 수행하는 모든 연산에는 언제나 작은 오차가 존재하게 된다.
'컴퓨터와 IT' 카테고리의 다른 글
동적할당, 정적할당, 가비지컬렉터 (0) | 2020.05.13 |
---|---|
메모리영역 ( 코드 영역 , 데이터 영역 , 힙 영역 , 스택 영역) (0) | 2020.05.13 |
기계어와 어셈블리어 (0) | 2020.05.13 |
아두이노 (0) | 2020.05.12 |
Java 란? (0) | 2020.04.24 |