Pages, Numbers 및 Keynote의 향상된 계산 정확도에 관하여

Pages, Numbers 및 Keynote를 업데이트한 후 도큐멘트에서의 계산 결과가 약간 변경될 수 있습니다. 이는 iWork 최신 버전에 계산 엔진 업데이트가 포함되어 있어서 이전보다 정확도가 훨씬 더 높은 결과가 나오기 때문입니다.

대부분의 공식은 눈에 띄는 차이를 보이지 않지만 극히 작은 숫자를 결과로 얻거나 사용하는 계산은 이제 훨씬 더 정확한 답을 보여 줄 수 있습니다.

예 1

Numbers, Pages 및 Keynote의 이전 버전에서 = 10.0 - 9.8의 계산 결과값은 0.199999999999999입니다.

셀에 표시되는 소수점 이하 자릿수(소수점 이하 1자리~14자리)를 변경하면 이 문제가 해결되어 예상된 결과인 0.2가 표시됩니다. 셀에 표시되는 소수점 이하 자릿수를 늘리면 0.199999999999999000000000000000이 표시됩니다.

이는 이진수가 내부적으로 십진수를 저장하는 방식 때문에 나타납니다. 십진수를 이진수로 표현할 때 매우 작은 차이가 유발될 수 있습니다. Pages, Numbers 및 Keynote의 계산 엔진은 이러한 차이가 계산에 합산되지 않도록 항상 정교한 기법을 사용했지만 매우 높은 정밀도에서는 차이가 명백하게 드러날 수 있습니다.

새로운 계산 엔진은 계산할 때 처음부터 끝까지 숫자를 십진수로 표현하여 이전 버전에 비해 크게 개선되었습니다.

결과적으로 위와 동일한 계산 = 10.0 - 9.8의 결과값은 이제 0.2로 도출됩니다. 표시되는 소수점 이하 자릿수를 늘려도 이제 값 0.2000000000000000000000000000000이 표시됩니다.

예 2

이전 버전의 Numbers에서 공식 ROUND(8.415,2)8.41을 반환합니다. 이 또한 값이 내부적으로 이진수로 저장되는 방식 때문에 나타납니다.

새로운 계산 엔진에서는 ROUND(8.415,2)가 8.42를 반환합니다.

이진화 십진수 인코딩과 십진수의 부동소수점 인코딩에 관하여

대부분의 컴퓨터는 숫자를 0과 1이 나열된 이진수로 저장합니다. BCD(Binary Coded Decimal: 이진화 십진수) 인코딩 프로세스는 분수를 대응하는 이진수로 변환합니다. 숫자가 BCD로 인코딩되면 일부 값을 완벽한 정확도로 표현할 수 없습니다. 예를 들어 0.2는 이진수 형식인 0.001100110011...로 표현됩니다. 이 값을 BCD로 인코딩하기 위해서는 값이 잘려야 하므로 저장된 값이 약간 변경됩니다. BCD로 인해 발생한 차이가 매우 작더라도 이러한 차이는 특정 유형의 계산 체인을 통해 증폭되면 더욱 명백하게 드러납니다.

Pages, Numbers 및 Keynote의 최신 버전은 128비트 DFP(Decimal Floating Point: 십진수의 부동소수점) 인코딩을 사용하여 숫자를 인코딩합니다. 이는 소수를 인코딩하는 훨씬 더 정확한 방식으로, BCD 인코딩에서 일반적으로 나타나는 반올림 오류를 피할 수 있습니다. 또한 업데이트된 계산 엔진은 DFP로 인코딩된 숫자에 직접적으로 작용하므로 표 셀의 값이 더 정확하게 저장되고 공식의 결과도 더 정확하게 계산됩니다.

대다수 공식은 눈에 띄는 차이를 보이지 않지만 극히 작은 숫자를 결과로 얻거나 사용하는 계산은 이제 훨씬 더 정확한 답을 보여 줄 수 있습니다.

게시일: