부동 소수점 값의 무결성 확인
이 코드 조각에서는 다음보다 작은 정수인 가장 큰 세제곱근을 구합니다. 12,000:
processing = True n = 12000 while processing: n -= 1 if n ** (1/3) == #checks to see if this has decimals or not
부동 소수점 값이 다음과 같은지 확인하려면 정수인 경우 float.is_integer() 메서드를 활용할 수 있습니다.
>>> (1.0).is_integer() True >>> (1.555).is_integer() False
Python 2에서 정수 피연산자의 바닥 나누기로 인해 1/3의 결과는 0이 되며 부동 소수점 산술은 다음과 같을 수 있습니다. 부정확하다. 이를 염두에 두고 루프를 조정합니다.
for n in range(12000, -1, -1): if (n ** (1.0/3)).is_integer(): print n
예상된 결과를 얻습니다.
27 8 1 0
그러나 부동 소수점 연산의 부정확성으로 인해 3제곱( 10648 포함)은 생략됩니다. 이 문제를 해결하려면 대신 정수에 가까운 숫자를 확인할 수 있습니다.
import math for n in range(12000, -1, -1): if math.isclose((n ** (1.0/3)), round(n ** (1.0/3))): print n
이 변형 출력은 다음과 같습니다.
10648 27 8 1 0
Python 3.5 이상의 경우 수학을 활용할 수 있습니다. isclose() 함수를 사용하여 부동 소수점 값이 사용자 정의 가능한 여백 내에 있는지 확인합니다.
위 내용은 Python에서 부동 소수점이 정수를 나타내는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!