[목차] [[有]][[效]][[數]][[字]]; significant figures == 설명 == 측정값은 측정에 사용된 도구의 측정 분해능(measurement resolution) 정도에 따라 각기 다른 자릿수로 나타난다. 똑같은 부피를 재더라도 [[파이펫]]의 최소 단위가 [math(\rm10\,mL)]인 것과 [math(\rm0.1\,mL)]인 것은 최소 눈금을 읽는 방식[* 참고로 눈금을 읽을 때에는 최소 눈금의 [math(1/10)]단위까지 눈대중으로 읽는 것이 측정의 기본이다.]이 다르기 때문에 자릿수에 차이가 날 수 밖에 없다. 유효숫자는 얻어진 측정값의 숫자 중 어디까지가 의미있는지를 나타내는 척도이며, 비단 이공계 관련 분야뿐만 아니라 측정이 필수적인 모든 분야에서 반드시 숙지해야하는 개념이다. 유효숫자에서 불확실성(uncertainty)을 나타내는 숫자는 '''맨 마지막 한 자릿수'''의 숫자이기 때문에 그 앞까지는 확실한 측정값이라는 것을 보장한다는 정보가 담겨있다. 이를테면 [[원주율]]을 유효숫자 5자리인 [math(3.1416)]으로 나타냈을 때 [math(3.141)]까지가 확실한 값이고 소수 넷째 자리는 [math(3.14155\sim3.14165)][* [[반올림]] 체계에서는 [math(3.14164)]가 상한선이 되겠지만 ISO에서 권장하는 최근접 짝수 반올림 체계에서는 [math(3.14165)]까지가 해당된다. 자세한 것은 [[유효숫자#끝수 처리|끝수 처리]] 문단 참고.]의 범위의 값을 처리한 불확실한 값임을 의미한다. 단 이는 무작위 오차(ramdom error)와는 다른 개념이다. 무작위 오차는 반복된 실험을 통해 얻어진 측정값들을 통계적으로 처리한 결과 [[불확정성 원리|필연적으로 생길 수 밖에 없는 측정값의 한계폭]]을 의미하고 표기로도 [math(a\pm b)][* 실제 측정값의 자릿수가 길 경우 괄호를 써서 나타내기도 한다. 이를테면 미세구조상수 [math(\alpha)]는 [math(\alpha = 0.007\,297\,352\,569\,3\pm0.000\,000\,000\,001\,1)]인데 [[여백이 부족하다|이게 공간을 많이 차지하기 때문에]] 주로 [math(\alpha = 0.007\,297\,352\,569\,3(1\,1))]로 나타낸다.]와 같이 나타낸다. 반면 유효숫자는 이러한 통계적인 의미를 내포하고 있지 않으며 오로지 측정을 한 번 하는 데에 사용한 도구의 분해능에 대한 정보만 제공할 뿐이다. == 유효숫자를 판단하는 방법 == === 유효숫자인 경우 === 우선, __측정값에 한하여__[* 개념적으로 계수 관계가 명확하지 않은 것, 즉 연속적인(continuous) 값을 말한다.] '''[math(\bf0)]이 아닌 숫자로 시작하는 자리부터 유효숫자'''이며, 소수점 아래에서 '''마지막에 등장하는 [math(\bf0)] 역시 유효숫자'''이고, 연산에서 아주 중요한 요소로 작용하기 때문에(후술) 함부로 생략해서는 안 된다. 예를 들어 어떤 용기의 부피가 '[math(\rm1.000\,L)]'라고 측정되었을 때, 이를 '[math(\rm1\,L)]'라고 쓰면 '''틀린다'''. [math(\rm1.000\,L)]는 최소 단위가 [math(\rm0.01\,L)]인 용기를 써서 [math(\rm0.001\,L)] 단위까지 눈대중으로 읽은 결과로, 최소 소수 둘째 자리는 [math(0)]인 게 확실하다는 뜻을 내포하고 있기 때문이다. 물론 유효숫자가 아니라면 소수점 아래 마지막에 오는 [math(0)]을 생략한다는 일반적인 약속을 적용해도 무관하다. 한편, 측정값이 아니고 개념적으로 배수 관계가 명확하다 하더라도 [[몰(단위)|그 수치가 터무니 없이 커서 굳이 전체 자릿수를 다 알 필요가 없는 경우]] 과학적 기수법으로 나타내기도 하는데 이 때에는 유효숫자로 간주해서 계산한다. 컴퓨터의 용량 등에 쓰이는 단위인 [math(\rm TiB)][* [math(\rm Ti)]는 '테비'(tebi)라고 읽는다. 보통 [math(\rm i)]를 생략한 [math(\rm TB)]('''테라'''바이트)로 많이 나타내는데 엄밀히는 틀린 표기이다. [math(\rm T = \times1000^4 = \times10^{12})]를 의미하는 [[SI 접두어]]이기 때문.]에서 [math(\rm Ti = \times2^{40})]으로 명확한 계수의 배수이지만 이를 [math(1.0995\times10^{12})]로 나타냈다면 유효숫자이다.[* 이와 비슷하게 [[몰(단위)|[math(\rm mol)]]]은 개념상 [[셈 측도|입자의 개수를 나타내는 무차원의 단위]]임에도 불구하고 [[SI 단위#SI 기본 단위|SI 기본 단위]]로 채택되어 차원이 [math(\sf N)]인 단위로 취급한다.] 아래의 예시에서 수레국화색 숫자가 모두 유효숫자에 해당한다. * [[황금비]] [math(\varphi)]의 근삿값 [math({\color{cornflowerblue}1.6180})] (유효숫자 5자리) * [[물리 상수#s-4.2.2|기체상수]] [math(R \approx\rm0.0{\color{cornflowerblue}82}\,atm\!\cdot\!L/(mol\!\cdot\!K))] (유효숫자 2자리) * [[크립톤|[math(\rm Kr)]]]의 [[전기 음성도]] [math({\color{cornflowerblue}3.00})] (유효숫자 3자리) * VSMOW[* 빈표준평균바닷물(Vienna Standard Mean Ocean Water). 이름에 [[바닷물]]이 들어가지만 [[이름과 실제가 다른 것|증류를 통해 염을 제거한 순수한 물]]이며 과거 물의 삼중점을 정의할 때 쓰였던 표준 물질이다.]의 [[어는점]] [math(\rm{\color{cornflowerblue}0.000}\,\degree\!C)] (유효숫자 4자리) * VSMOW의 [[끓는점]] [math(\rm{\color{cornflowerblue}10\overline0}\,\degree\!C)] (유효숫자 3자리) * 태양의 표면 온도 [math(\rm{\color{cornflowerblue}5\underline5}00\,\degree\!C)] (유효숫자 2자리) [[유리수#s-2|유리수의 소수 표현 중에 순환마디의 위나 아래에 줄을 긋는 경우]]가 있고(해당 문서 참조) 후자 2개처럼 유효숫자 마지막 자릿수에 줄을 긋는 표기는 혼동을 야기할 수 있기 때문에 일반적이지 않으며, 보통은 줄 없이 그냥 [math(5500)], [math(100)]처럼 나타낸다. 문제는 이렇게 쓰면 소수점 위에서 [math(0)]으로 끝나고 있기 때문에 별도의 언급이 없으면 어느 [math(0)]까지가 유효숫자인지 판단할 수 없다. 유효숫자의 자릿수와 정수의 자릿수가 같을 때, 이를테면 [math(5500{\color{cornflowerblue}.})], [math(100{\color{cornflowerblue}.})]처럼 소수점을 찍어서 유효숫자를 명시할 순 있으나[* 즉 [math(5500.)], [math(100.)]은 각각 유효숫자 4자리, 3자리이다.] 유효숫자의 자릿수가 정수 자릿수보다 작은 경우엔 답이 없다. 이를 보완하기 위해 나온 것이 바로 과학적 기수법(scientific notation)이다. === 유효숫자가 아닌 경우 === '~개', '~회' '~배' 등과 같이 '''개념적으로 계수가 명확한 것, 즉 이산적인(discrete) 값'''은 유효숫자가 아니다. 이를테면 물 분자의 분자량을 계산할 때, 산소 원자의 '''개수'''만큼 곱해주는 [math(2)]는 유효숫자가 아니다. 꼭 정수만 해당되는 건 아니고, 수소의 연소로 인한 물의 생성 엔탈피는 산소 기체에 [math(\dfrac12)]만큼의 계수가 곱해지는데 이는 반응한 산소와 생성된 물의 입자수 비가 [math(1:2)]라는 관계에서 나온 것이기 때문에 산소의 물질량이나 반응한 기체의 부피 등을 구할 때 곱해지는 [math(\dfrac12)] 혹은 [math(0.5)]는 유효숫자가 아니다. 이 밖에도 자릿수가 약속되어있지 않은 수학 상수들([[원주율|[math(\pi)]]], [[자연로그의 밑|[math(e)]]], [[√2|[math(\sqrt2)]]] 따위)[* 단, 손계산에서 이들 무리수의 근삿값으로 각각 [math(3.14)], [math(2.718)], [math(1.414)] 등이 제시되었을 경우 측정치로 간주하고 유효숫자로서 계산한다.]도 유효숫자가 아닌 것으로 간주하며 이들은 무한소수이기 때문에 유효숫자라 하더라도 '''자릿수가 무한개'''다. 또한 유효숫자는 [[실수(수학)|실수]]로서의 개념이기 때문에 [[복소수]]의 허수단위 [math(i)]나 [[사원수]]의 허수 단위 [math(i)], [math(j)], [math(k)]등에서는 굳이 따지지 않는다. 단, 이들 단위에 곱해진 계수에 대해서는 경우에 따라 유효숫자로 간주할 수도 있다. === [anchor(과학적 기수법)]과학적 기수법 === 측정값을 유효숫자 [math(s\,(1\le s<10))]와 [math(10)]을 밑으로 하는 정수 [math(n)]의 거듭제곱을 이용하여 [math(s\times10^n)]의 꼴로 나타내는 방법. 계산기에서는 [math(10^n = {\sf e}n)] 혹은 [math( {\sf E}n)]으로 표기하기도 한다. 앞선 예시들을 과학적 기수법으로 나타내면 다음과 같다. * [math(1.6180)] * [math(\rm8.2\times10^{-2}\,atm\!\cdot\!L/(mol\!\cdot\!K))] * [math(3.00)] * [math(\rm0.000\,\degree\!C)] * [math(\rm5.5\times10^3\,\degree\!C)] * [math(\rm1.00\times10^2\,\degree\!C)] 유효숫자의 자릿수와 규모(scale)를 한눈에 알아볼 수 있다는 점에서 아주 유용한 표기이지만, 모든 측정값의 표기에 이 방식을 도입하면 공간을 매우 낭비하게 된다는 단점이 있다. 또한 측정값을 이용해서 사칙연산을 할 경우, 과학적 기수법은 곱셈과 나눗셈에서 매우 효율적이지만, 덧셈과 뺄셈에서는 거듭제곱을 맞춰줘야 하기 때문에 다소 번거로워진다는 문제점도 안고 있다. == [[반올림#s-1|끝수 처리]] == [[국제표준화기구]](ISO)에서는 ISO 80000-1에서 소위 '오사오입(五捨五入)'이라 불리는 '''최근접 짝수 [[반올림]]'''(Round to nearest even)[* 은행업자들이 즐겨 썼던 방식이기 때문에 '은행업자 반올림'(banker's rounding)이라고도 한다.]을 권장한다. 끝수가 [math(0\sim4)], [math(6\sim9)]일 때에는 기존 반올림과 똑같고, [math(5)]일 때에는 __처리한 결과의 마지막 자릿수가 짝수가 되게 하는__ 방식이다. 즉, '''[math(\bf5)] 앞이 홀수면 올리고 짝수면 버린다'''. 예를 들면 [math(\log_{10}7 = 0.845\,098\,040\cdots\cdots)]을 유효숫자 2자리로 처리하면 기존 반올림 [math(0.85)]와는 달리 [math(0.84)]가 되고 [[오일러-마스케로니 상수|[math(\gamma = 0.577\,215\,664\cdots\cdots)]]]를 유효숫자 5자리로 처리하면 반올림의 경우와 똑같은 [math(0.577\,22)]가 된다. == 유효숫자의 연산 == 전술한대로 유효숫자는 불확실성을 내포하고 있기 때문에, '''연산 결과 불확실성이 줄어들거나 늘어나서는 안된다'''는 대원칙을 토대로 유효숫자를 처리하는 규칙이 약속되어있다. 각 규칙의 설명은 어디까지나 정성적인 수준으로 엄밀하지 않으며 구체적인 수치로 따져보면 예외가 존재하지만 편의상 그렇게 정해져 있다고 생각하면 된다. 붉은 글씨는 각 유효숫자 및 계산 과정에서 불확실한 숫자임을 나타낸다. === 덧셈, 뺄셈 === 불확실한 숫자는 맨 마지막 자릿수의 숫자이므로, 그 자릿수보다 아래에 있는 숫자는 모두 불확실하다고 볼 수 있다. 이를테면 [math(1.41{\color{red}4})]는 소수 셋째 자리부터 불확실한 숫자이고 [math(0.301{\color{red}0})]은 소수 넷째 자리부터 불확실한 숫자이다. 이 둘을 더하면 [math(1.71{\color{red}50})]이 되며 불확실한 숫자가 2자리로 늘어나므로 불확실성 불변의 원칙에 따라 1자리가 되도록 끝수 처리를 해야한다. 위 결과에서는 소수 셋째 자리부터 불확실한 수치이므로 [math(1.71{\color{red}5})]로 정리한다.[* 어디까지나 유효숫자의 끝수 처리 규칙에 따라 [math(0)]이 사라진 것일 뿐이며 소수점 아래 마지막 [math(0)]을 생략하는 일반적인 약속에 의한 것이 아님에 주의하자. 결과만 같아진 것일 뿐이다.] 이를 일반화하면, 덧셈 및 뺄셈에서는 __소수점 아래 자릿수가 가장 적은 쪽에 맞추면 된다__는 것을 알 수 있다. 한편, 소수점 아래 자리가 없는 정수의 경우, 값을 과학적 기수법으로 나타내면 소수점 아래 자리를 포함하는 수치로 나타낼 수 있고, 덧셈 및 뺄셈을 연산하려면 모든 수의 자릿수가 같아야하므로, 다른 수치들도 똑같은 거듭제곱으로 통일시켜서 소수점을 이동시켜주면 된다. 이를 정리하면 덧셈, 뺄셈에서의 연산 규칙은 다음과 같다. > '''지수가 가장 큰 쪽으로 거듭제곱을 통일한 과학적 기수법에서 유효숫자의 소수점 아래 자릿수가 가장 적은 쪽에 맞춘다.''' * [math(3.141\,5\times10^3 + 2.718\,28\times10^{-1} \approx 3.141\,8\times10^3)] 지수가 큰 쪽으로 거듭제곱을 통일하면 [math((3.141\,{\color{red}5} + 0.000\,271\,82{\color{red}8})\times10^3)]으로 나타낼 수 있고 소수점 아래 자릿수를 비교해보면 전자는 4자리, 후자는 9자리이므로 결과값은 소수 넷째 자리까지 정리한다. 이를 도식화하면 다음과 같다. [math(\begin{matrix} \begin{aligned} \\ + \end{aligned} & \begin{aligned} 3&.141\,{\color{red}5} && \times10^3 \\ 0&.000\,271\,82{\color{red}8} && \times10^3 \end{aligned} \\ \hline & \begin{aligned} 3&.141\,{\color{red}771\,828} && \times10^3 \end{aligned} \end{matrix} \\ \therefore3.141\,{\color{red}5}\times10^3 + 2.718\,2{\color{red}8}\times10^{-1} \approx 3.141\,{\color{red}8}\times10^3)] === 곱셈, 나눗셈 === 불확실한 수치가 곱해지면 다른 한쪽이 확실한 수치여도 결과적으로 불확실한 수치가 포함된다는 것은 납득할 수 있을 것이다. 이때, 어느 자리까지 불확실한 수치로 봐야하는지에 대한 문제가 생긴다. 이를테면 유효숫자인 [math(3.{\color{red}6})]을 [math(2)]배하는 연산 [math(3.{\color{red}6}\times2)]를 생각해보자. 일단 결과는 [math(7.2)]인데 여기서 일의 자리의 [math(7)]은 확실한 수치 [math(3\times2)]에 불확실한 수치와의 곱 [math(0.{\color{red}6}\times2 = {\color{red}1.2})]의 [math(\color{red}1)]이 더해진 값이니까 [math(7.2)] 전체가 불확실한 값이 되는 것일까? 얼핏 합당한 추론같아 보이지만, 곱셈 연산을 거듭할수록 불확실한 자릿수가 점점 늘어나 결과적으로 유효숫자의 자릿수가 줄어드는 문제가 있는 데다가(불확실성 불변의 원칙 위배), 두 수의 곱이 [math(10)]미만이면 이러한 특징이 나타나지 않아 모든 곱셈 연산에 일괄적으로 적용할 수 없다는 문제도 있다. 따라서 이러한 판단은 적절치 않다. 본디 곱셈이란 같은 것을 여러번 더하는 덧셈 연산과 등가이다. 즉, [math(3.{\color{red}6}\times2 = 3.{\color{red}6}+3.{\color{red}6})]이다. 덧셈, 뺄셈의 연산 규칙을 적용하면 소수 첫째 자리가 불확실한 값들의 덧셈이므로 결과 역시 소수 첫째 자리까지 정리하며 결과적으로 [math(7.{\color{red}2})], 즉 '''여전히 마지막 자릿수만 불확실한 수치'''라는 것을 알 수 있다. 만약 [math(\color{red}2)]도 유효숫자라면 [math(3\times{\color{red}2} = {\color{red}6})] 역시 불확실한 수치이기 때문에 [math({\color{red}6} + 1 = {\color{red}7})]도 불확실한 수치가 되며, 그 결과 [math({\color{red}7.2} \approx \color{red}7)]로 정리한다. 이 과정을 잘 살펴보면, 전자는 유효숫자 2자리가 그대로 유효숫자 2자리가 되는 연산이고, 후자는 유효숫자 2자리와 유효숫자 1자리가 곱해져서 유효숫자 1자리가 되는 연산임을 알 수 있다. 즉 결과값은 __곱하는 유효숫자의 자릿수가 가장 적은 쪽에 맞춰진다__. 나눗셈은 역수의 곱셈 연산과 같으므로 이를 정리하면 곱셈, 나눗셈에서의 연산 규칙은 다음과 같다. > '''유효숫자의 자릿수가 가장 적은 쪽에 맞춘다.''' * [math(1.4\times0.6931 \approx 0.97)] 유효숫자 2자리와 유효숫자 4자리의 곱이므로 결과값은 유효숫자 2자리로 정리한다. 마찬가지로 도식화하면 다음과 같이 된다. [math(\begin{matrix} \begin{aligned} \\ \times \end{aligned} & \begin{aligned} 1&.{\color{red}4} \\ 0&.693\,{\color{red}1}~~ \end{aligned} \\ \hline \begin{aligned} \\ \\ \\ + \end{aligned} & \begin{aligned} 0&.000\,{\color{red}14} \\ 0&.004\,{\color{red}2} \\ 0&.12{\color{red}6} \\ 0&.8{\color{red}4} \end{aligned} \\ \hline & 0.9{\color{red}70\,34}\end{matrix})] 혹은 [math(\begin{matrix} \begin{aligned} \\ \times \end{aligned} & \begin{aligned} 0&.693\,{\color{red}1}~~ \\ 1&.{\color{red}4}~~ \end{aligned} \\ \hline \begin{aligned} \\ + \end{aligned} & \begin{aligned} 0&.2{\color{red}77\,24} \\ 0&.693\,{\color{red}1} \end{aligned} \\ \hline & 0.9{\color{red}70\,34}\end{matrix} \\ \therefore 1.{\color{red}4}\times0.693{\color{red}1} \approx 0.9\color{red}7)] === 일반적인 함수 및 연산 === 지수, 로그, 삼각함수 등 일반적인 함수에 대한 유효숫자 계산법은 교과과정에서 나오지 않는데, 연산에 의해 변하는 불확실성을 정확히 설명하기 위해서는 [[미분]]이 필요하기 때문이다. 값 [math(x)]의 유효숫자가 소수점 이하 [math(n)]자리까지 있다는 이야기는, 값 [math(x)]와 반올림한 근사값 [math(a)]에 대해 [math(|x - a| < 0.5 \times 10^{-n})] 가 성립함을 의미한다. 한편 미분계수의 성질을 생각하면 [math(|f(x) - f(a)|)]는 [math(|x-a||f'(x)|)]에 근접하므로, [math(f(x))]의 유효숫자가 소수점 이하 [math(m)]자리까지 있으려면 [math(|x-a||f'(x)| < 0.5 \times 10^{-m})] 이 만족되어야 한다. [math(|x-a|)]가 [math(0.5 \times 10^{-n})] 정도의 크기를 가질 수 있으므로, [math(|f'(x)| < 10^{-(m-n)} \Leftrightarrow m-n \le - \log_{10}|f'(x)|)] 이를 정리하면 다음과 같다. > '''미분계수의 상용로그값을 정수 단위로 올림해서 나온 숫자만큼 유효숫자의 마지막 위치가 변한다.''' 만약 유효숫자의 개수를 비교하고 싶으면, [math(x)]의 유효숫자의 개수는 [math(\log_{10}\dfrac x{10^{-n}})]을 내림한 정수로 생각할 수 있기 때문에, 다음의 조건을 생각할 수 있다. > '''[math(\left|\dfrac{x f'(x)}{f(x)}\right|)]의 상용로그값을 정수 단위로 올림해서 나온 숫자만큼 유효숫자의 개수가 줄어든다.''' 변량 [math(\left|\dfrac{x f'(x)}{f(x)}\right|)]은 [[수치해석]] 등에서 등장하는 조건수(conditional number)라는 개념의 일종이다. 이항연산 및 다항연산에 대해서도 비슷하게 조건수를 생각할 수 있고, 위에 이야기한 덧셈, 곱셈에서의 유효숫자 규칙도 엄밀히 생각하면 [math(f(x,\,y))]의 불확실성을 다변수 미분의 성질을 이용해 [math(|x-a| \partial_x f + |y-b| \partial_y f)]로 간주하는 것으로 해석하는 것이 맞는다. === 복합 연산 === 기본적으로 [[사칙연산#s-2|사칙연산의 순서]]에 따라 계산해나간다. 단, 유효숫자의 처리 규칙이 연산 종류에 따라 판이하게 다르기 때문에(특히 덧셈/뺄셈이 다른 연산 규칙과 두드러지게 다르다.) 연산 종류끼리 중간 과정을 계산해서 각각의 유효숫자 혹은 소수점 아래 자릿수를 확인해야한다. 당연한 사항이지만 유효숫자 처리는 연산 맨 마지막에 하는 것이 원칙이다. [[분류:산술]][[분류:수치해석]][[분류:측량]][[분류:도량형]]