반응형

부동소수점은 우리가 알고 있는 primitive type의 형중에서


산술연산에 있어서 각 언어마다 매번 혼돈을 일으키고 있는 요소이다.


이런 부동소숫점 연산의 문제점이 무엇인지 한번 적어보도록 하자.



(1) Javascript에서의 부동소수점 연산 오류

아래와 같은 코드가 있다고 가정하자, 출력물을 바로보도록 하자. 흠.. 에러의 원인은 나도 잘모르겠다.





위 코드의 결과화며은 아래와 같다.




위와 같이 출력되는 원인은 컴퓨터는 부동소숫점(float, double)에 대해서, 정확한 값을 리턴하지 못하고, 


리턴 하기 때문에 정확한 연산을 할 수 없다.


(2) Java 에서의 부동소수점 연산 오류

Java 에서도 (1)과 같이 부동소수점 오류가 발견된다. 아래 코드를 실행해 보도록 하자.

public class AA {

	public static void main(String argsp[]) {
		System.out.println(2.0 - 1.1);
	}
}

위 코드의 결과는 다음과 같다.



※ 그렇다면, Java 에서는 위 문제점을 해결하기 위해 어떻게 해야하는것인가?

    추후, 별도 Blog posting을 하겠지만, BigDecimal 을 사용하면 깔끔하게 해결이 된다.



위처럼.. 예상했던 결과와는 다른 결과가 출력됨을 확인할 수 있다. 만약에 ~ 통계페이지와 같이 소숫점 하나


하나가 매우 중요한 페이지의 결과물을 처리한다고 가정하였을때에는,, 어떻게 해야할까?


충분히 생각해 볼만한 문제인듯하다.



ps: 추가적으로 시간날때마다 타 언어에서 자료형의 산술연산의 오류를 찾아보도록 하자.



반응형

+ Recent posts