C에서 pow(10, 5)를 사용하여 10의 5승을 계산합니다. 때때로 예상치 못한 9,999 값이 발생합니다. 이 동작은 다음 코드 조각에서 볼 수 있듯이 일관성이 없으며 혼란을 초래할 수 있습니다.
const int sections = 10; for (int t = 0; t < 5; t++) { int i = pow(sections, 5 - t - 1); cout << i << endl; }
이 코드의 예상 출력은 [10000, 1000, 100, 10, 1]이지만 실제로는 [9999, 1000, 99, 10, 1].
이 문제의 원인은 C에서 pow(10.0, 5)의 부동 소수점 표현에 있습니다. 이 계산 결과가 배정밀도 부동 소수점 변수에 저장되면 소수 부분이 포함될 수 있습니다. 그런 다음 정수 변수에 할당하면 소수 부분이 잘려 실제 답보다 약간 작은 값이 생성됩니다. 이 경우 pow(10.0, 5)는 내부적으로 9999.9999999로 표시될 수 있으며 정수에 할당하면 9999로 잘립니다.
이 문제를 방지하려면 다음을 사용할 수 있습니다. 다음 대안:
위 내용은 왜 `pow(10, 5)`는 때때로 C에서 9999를 반환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!