이중 정밀도 소수 자릿수
질문:
배정밀도 값이 소수점 이하 15자리의 정밀도를 사용하면 내부 값이 더 높은 정밀도를 나타내는 경우가 많습니다. 이러한 불일치가 관찰되는 이유는 무엇입니까?
답변:
IEEE double은 53개의 유효 비트를 가지며 약 15.95자리의 정밀도를 제공합니다(공식 log10(253)). 이 이론적 정밀도는 DBL_DIG 상수로 표시된 10진수 15자리보다 약간 더 큽니다. 추가 정밀도는 추가 유효 비트로 설명됩니다.
nextafter() 함수는 주어진 double의 실제 정밀도를 보여줍니다. 주어진 값에 가장 가까운 표현 가능한 숫자를 계산하면 배정밀도 값의 유효 숫자가 일반적으로 16개임을 알 수 있습니다.이를 보여주는 프로그램은 다음과 같습니다.#include <cstdio> #include <cfloat> #include <cmath> int main() { double x = 1.0/7.0; printf("FLT_RADIX = %d\n", FLT_RADIX); printf("DBL_DIG = %d\n", DBL_DIG); printf("DBL_MANT_DIG = %d\n", DBL_MANT_DIG); printf("%.17g\n%.17g\n%.17g\n", nextafter(x, 0.0), x, nextafter(x, 1.0)); }
위 내용은 배정밀도 숫자가 소수점 이하 15자리보다 더 정확해 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!