Python에서 부동 소수점이 정수를 나타내는지 확인하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-13 01:11:02
원래의
452명이 탐색했습니다.

How to Check if a Float Represents an Integer in Python?

부동 소수점 값의 무결성 확인

이 코드 조각에서는 다음보다 작은 정수인 가장 큰 세제곱근을 구합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿