부동 소수점 숫자에서 두 개의 소수점 유지
부동 소수점 숫자로 작업할 때 특정 소수점으로 제한하는 것이 바람직한 경우가 많습니다. 소수점 수. 그러나 단순히 round() 함수를 사용하면 다음 동작에서 볼 수 있듯이 예상치 못한 결과가 발생할 수 있습니다.
>>> a 13.949999999999999 >>> round(a, 2) 13.949999999999999
이는 부동 소수점 숫자가 모든 숫자를 정확하게 표현하는 데 한계가 있기 때문에 발생합니다. 메모리에 저장된 값은 표시된 값과 항상 동일하지는 않습니다.
부동 소수점 정밀도 이해
Python에서 사용되는 이중 정밀도 부동 소수점 숫자는 대략 정밀도는 16자리입니다. 즉, 13.95와 같은 숫자는 다음과 유사한 방식으로 표시됩니다.
125650429603636838/(2**53)
round() 함수를 적용할 때 결과는 여전히 동일한 부동 소수점 값이며 내부적으로 동일한 제한으로 표시됩니다.
>>> 125650429603636838/(2**53) 13.949999999999999
소수점 제한을 위한 대체 방법 포인트
소수점 두 자리만 표시해야 하는 경우 다음 대안을 고려하세요.
예:
>>> a = 13.946 >>> print("%.2f" % a) 13.95 >>> print("{:.2f}".format(a)) 13.95 # Using decimal module >>> import decimal >>> a = decimal.Decimal('13.946') >>> a.quantize(decimal.Decimal('.01')) Decimal('13.95')
위 내용은 Python의 부동 소수점 숫자에서 소수점 두 자리를 어떻게 안정적으로 보존할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!