티스토리 뷰
발생일: 2009.11.05
문제:
디자인 패턴 책을 읽으면서 예제를 따라해보던 중,
double 의 합계 계산에서 뭔가 이상한 점을 발견했다.
double a = 1.13;
double b = 0.86;
System.out.println(a + b);
이렇게 했을 때, 그 결과가 1.99가 나와야 정상인데,
1.9899999999999998 가 나와버린다.
움메... 이거 왜 이럴까...
해결책:
float 과 double 타입은 과학과 엔지니어링 분야의 계산을 위한 목적으로 설계되었다.
그러나 정확한 결과를 제공하지는 않기 때문에, 주의해서 사용해야 한다고 한다.
그렇기 때문에 float 과 double 타입은 특히 화폐 계산에 부적합하다.
float이나 double은 0.1(혹은 negative power of ten)을 정확하게 표현하지 못하기 때문이다.
자세한 내용은 아래 포스트를 참고하자.
문제:
디자인 패턴 책을 읽으면서 예제를 따라해보던 중,
double 의 합계 계산에서 뭔가 이상한 점을 발견했다.
double a = 1.13;
double b = 0.86;
System.out.println(a + b);
이렇게 했을 때, 그 결과가 1.99가 나와야 정상인데,
1.9899999999999998 가 나와버린다.
움메... 이거 왜 이럴까...
해결책:
float 과 double 타입은 과학과 엔지니어링 분야의 계산을 위한 목적으로 설계되었다.
그러나 정확한 결과를 제공하지는 않기 때문에, 주의해서 사용해야 한다고 한다.
그렇기 때문에 float 과 double 타입은 특히 화폐 계산에 부적합하다.
float이나 double은 0.1(혹은 negative power of ten)을 정확하게 표현하지 못하기 때문이다.
자세한 내용은 아래 포스트를 참고하자.
*
해당 내용을 검색하다가 형변환과 관련한 유용한 포스트를 찾았다.
참고하자.
반응형
댓글
공지사항