반응형

부동 소수점 오류 예

0.1을 100번 더하면 10이 나와야 되는데
0.1을 정확히 표현할 수 없기 때문에 발생하는 오류이다.

 

JAVA

 

Python

 

 

C

 

 

컴퓨터는 이진법을 사용해 숫자를 저장 하기에 우리가 흔히 사용하는 십진법과는 조금 다르다.

이로 인해 0.1이나 0.2와 같은 십진법에서는 정확한 소수로 표현할 수 없는 수들이 부동소수점으로 저장될 때 정확도가 떨어지게 되고 결국 위와 같은 결과를 초래하게 된다.

 

 

따라서 정확한 계산이 필요한 경우에는 부동소수점을 사용하지 않고 정수로 변환하여 계산하는 것이 좋다.

즉, 모든 수를 정수로 바꾸어 계산하고, 마지막에 소수로 다시 바꾸어주는 그런 방식을 이용하면 좋다.

 

https://steemit.com/kr/@modolee/floating-point

반응형

'Basic > C' 카테고리의 다른 글

atoi, itoa, stoi, itos 구현  (0) 2018.01.31
strcpy, strlen, strcmp 구현  (0) 2018.01.13
scanf를 자유자제로 이용해보기  (2) 2017.04.18
Dangling pointer  (0) 2016.05.31
if else로 범할 수 있는 오류  (0) 2016.03.24