Burninghering's Blog
article thumbnail
Published 2022. 1. 6. 09:44
1-5.JAVA 기초 - 자료형(실수) JAVA

부동 소수점 방식

 

  • 실수는 정수 보다 정밀하기 때문에 정수와는 다른 방식으로 표현해야 함

부동 소수점 방식으로 실수 값 0.1 표현

  • 컴퓨터에서, 실수를 지수부와 가수부로 표현
  • 컴퓨터에서는 밑수를 2로 사용
  • 정규화 : 가수가, 밑수보다 작은 한 자리까지 가수로 표현 되는 것 (가수<밑수)

컴퓨터에서는 밑수가 2 이므로 정규화를 하게 되면 가수부분의 첫 번째 자리 숫자는 항상 1임
예) 0.2 표현 0.4 X 2-1 정규화 하면 1.6 X 2-3

 

====> 결론적으로, 항상 1.m * 2의 -n제곱 의 형태

float형과 double형

float은 4byte, bouble은 8byte

 

 

예제

package ch07;

public class DoubleTest {
	public static void main(String[] args) {
		
		double dnum=3.14;
		float fnum=3.14F; //리터럴은 지정된 데이터 타입(int)으로 저장 -> 4byte -> 3.14는 4byte에 담긴 너무 크다  -> f붙이기
		//만약 파라미터 에러가 날 때,  F를 안 붙여줘서 에러가 나는 경우가 많음 
		
		System.out.println(dnum);
		System.out.println(fnum);
	}
}

 

부동 소수점 방식의 오류

지수와 가수로 나타내는 부동 소수점 방식에서는 지수부가 0을 표현할 수 없기 때문에 약간의 오차가 발생할 수 있다

   public class DoubleTest2 {

	public static void main(String[] args) {

		double dnum = 1;
		
		for(int i = 0; i<10000; i++) {
			dnum = dnum + 0.1;
		}
		System.out.println(dnum);
	}
}

 

결과

0.000000000159만큼의 오차 발생

 

오차가 발생할 수 있지만, double로 나타내는게 훨씬 많은 범위의 실수를 나타낼 수 있기 때문에

double 사용 (실수는 거의 double형으로 나타내야 하고, float을 쓰려면 끝에 f 써야함!)

profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.