inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

나도코딩의 자바 기본편 - 풀코스 (20시간)

퀴즈 #1

실수형 float 과 double

해결된 질문

3552

다비드

작성한 질문수 5

0

int와 long의 차이가

int는 21억 이하의 숫자, long은 21억 이상의 숫자 일 때 사용한다고 하셨는데

int로 충분히 사용 가능한 경우에 long을 사용하면 데이터가 남용되기 때문에 적절하게 사용하라고 하셨는데

float과 double의 경우에도 7자리 미만의 소숫점의 실수의 경우 double말고 float을 사용하는 것이 좋나요?

java oop

답변 1

1

나도코딩

안녕하세요?

먼저 질문에 대한 대답은 '네' 입니다.
float 은 7자리, double 15자리 정도의 정밀도를 가집니다. 그래서 상대적으로 낮은 정밀도의 실수인 경우 float 을, 높은 정밀도의 실수인 경우 double 의 사용을 권장드리는데요. 다만 7자리 미만의 소수점이라기보다는 이렇게 이해하시는 것이 좋습니다.

1234567 이라는 7자리의 수가 있습니다. 이 때 소수점을 어디에 찍느냐에 따라 다음과 같이 수가 달라질 수 있는데요. 이를 10 의 몇 승으로 곱하는 형태로 표현을 하면 우측의 값과 같습니다.

1) 1234567.0 = 1234567 x 10의 0승
2) 12345.67 = 1234567 x 10의 -2승
3) 123.4567 = 1234567 x 10의 -4승
4) 1.234567 = 1234567 x 10의 -6승
5) 0.01234567 = 1234567 x 10 의 -8승

즉 1234567 이라는 7자리는 float 을 이용하면 오차 없이 표현이 가능합니다. 아래에 예시 코드를 작성하였으며 주석으로는 실행 결과를 적었습니다.

System.out.println(1234567.0f); // 1234567.0
System.out.println(12345.67f); // 12345.67
System.out.println(123.4567f); // 123.4567
System.out.println(1.234567f); // 1.234567
System.out.println(0.01234567f); // 0.01234567

이번에는 1234567 앞에 9 를 붙여서 총 8자리의 수인 91234567 을 동일하게 출력해보겠습니다. 이 경우 맨 오른쪽 끝값이 7 임에도 불구하고 주석으로 작성한 실행 결과와 8, 7, 6, 5 로 표현되는 오차가 발생한다는 것을 확인할 수 있습니다.

System.out.println(91234567.0f); // 9.1234568E7
System.out.println(912345.67f); // 912345.7
System.out.println(9123.4567f); // 9123.457
System.out.println(91.234567f); // 91.234566
System.out.println(0.91234567f); // 0.91234565

이 부분을 감안하셔서 사용하려는 데이터의 정밀도에 따라 float 또는 double 을 선택하시면 되겠습니다.

감사합니다 😊

0

다비드

딱 떨어지는게 아닌 정도의 정밀도 군요. 감사합니다!

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

1

146

2

static이 뭐였는지 기억이 안나요 ㅜㅜ

0

119

2

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

0

71

1

사고력 키우는 법이 어떤게 있나요?

0

93

2

getter setter

0

103

2

섹션9. 66 메소드 오버로딩 시 질문이 있습니다.

0

80

1

안녕하세요 갑자기 프로그램 에러가 떠서 안되네요

0

76

2

변수 이름짓는법

0

114

2

intelli J 실행오류

0

115

2

혹시 이건 수학적 사고가 부족한 걸까요?

0

152

2

영상이 재생이 안됩니다.

0

167

3

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

0

117

2

응용이 어렵습니다.

0

206

2

IntelliJ가 보이지 않습니다.

0

186

3

JDK 버전 문의

0

129

2

BlackBox 파일 내에서 메소드 정의

0

136

1

동기화

0

121

2

Iterator 문의

0

105

1

코드 순서 문의

0

143

1

클래스 메소드

0

149

2

Quiz_05 관련 질문드립니다 !

0

118

2

다운로드가 안됩니다

0

165

2

다형성

0

120

2

HashMap

0

80

2