float형은 유효 숫자를 7개까지 double형은 유효 숫자를 15개까지 보장해 준다고 하는데그런데 유효 숫자는 정확히 무엇을 의미하는 것인지 잘 모르겠어서 한 번 공부해 보았다.
유효숫자는 수의 정확도와 정밀도에 영향을 주는 숫자를 의미한다.
수의 정확도와 정밀도에 영향을 준다는 말은 무슨 말일까?
예를 들어 사과 5432개가 있다.
이 사실을 다른 사람에게 한 치의 오차도 없이 정확하게 전달하려면 5, 4, 3, 2 이 4개의 숫자를 10진법을 이용해 표기해야 한다.
이때 5, 4, 3, 2 이 4개의 숫자를 수의 정밀도에 영향을 끼치는 유효 숫자라고 할 수 있다.
만약 5432.0000000 이런 표기가 있다고 했을 때 소수점 뒤의 무수히 많은 0은 모조리 유효 숫자 취급을 받지 못할 것이다.
소수점 뒤의 0이 얼마나 많이 있든 5432라는 본질을 표현하는 데 아무런 영향을 끼치지 않기 때문이다.
소수점 뒤에 0이 아닌 숫자가 올 경우에는 어떨까.
예를 들어, 빼빼로데이를 기념해서 상품을 11.11%로 할인해 판매한다고 가정하자.
그러면 상품의 가격 * 11.11% 이렇게 계산을 해서 가격을 매겨야 할 것이다.
이때의 유효 숫자는 몇 개일까? 당연하게도 1, 1, 1, 1 총 4개가 될 것이다.
11.11%라는 정확한 수치를 상품의 가격에 곱해야 하기 때문에 해당 수치를 표현하기 위해서는 4개의 1이 필요하기 때문이다.
소수점 아래에서의 유효 숫자를 논할 때 한 가지 주의점이 있는데
소수점 아랫자리에서 유효 숫자 왼쪽에 있는 0은 유효 숫자로 치지 않는다는 점이다.
예를 들어 0.00013 이 숫자에서 소수점과 1 사이에 있는 0은 유효 숫자로 치지 않는다.
왜인지는 잘 모르겠는데 아마 정규화 표기법을 이용해서 모두 없앨 수 있어서 그렇지 않나 하는 생각이 든다.
요약
1) 정수의 경우 0이 아닌 모든 숫자는 유효 숫자
* 단, 0이 아닌 두 수 사이에 있는 0은 유효 숫자로 취급
2) 소수점 아랫자리에서 유효 숫자 왼쪽에 있는 0은 유효 숫자로 취급하지 않는다.
3) 정수든 소수든 정규화 표기법으로 나타낼 수 있으면 유효숫자로 취급하지 않는다.
'프로그래밍 언어 > C언어' 카테고리의 다른 글
가변 인자에 대하여 (0) | 2023.07.04 |
---|---|
알면 알수록 헷갈리는 포인터 뽀개기 (0) | 2023.06.25 |