반올림 없이 부동 소수점 값을 특정 소수 자릿수로 자르는 작업은 Python에서 'truncate( )' 기능. 이 함수는 두 개의 인수, 즉 잘라낼 부동 소수점 값과 유지할 소수 자릿수를 사용합니다. 다음은 지능형 반올림을 사용하는 함수의 구현입니다.
def truncate(f, n): '''Truncates/pads a float f to n decimal places without rounding''' s = '{}'.format(f) if 'e' in s or 'E' in s: return '{0:.{1}f}'.format(f, n) i, p, d = s.partition('.') return '.'.join([i, (d+'0'*n)[:n]])
이 함수는 부동 소수점을 문자열로 변환하여 전체 정밀도가 유지되도록 합니다. 그런 다음 문자열을 정수 부분, 소수점, 소수 자릿수의 세 부분으로 나눕니다. 소수점 자리를 유지하고 필요한 경우 0으로 채운 다음 부분을 다시 결합하여 잘린 문자열을 형성합니다.
어떤 경우에는 부동소수점을 소수점으로 정확하게 표시하는 것이 불가능합니다. 표기법. 예를 들어 정확히 0.3은 IEEE 부동 소수점으로 정확하게 표시할 수 있지만 소수점으로 표시할 수는 없습니다. 이러한 경우 함수는 Python 2.7 이상에서 제공되는 기본 문자열 형식 지정 작업을 사용합니다. 이 작업은 반올림 없이 float의 가장 가까운 십진수 표현을 지능적으로 선택합니다.
2.7 또는 3.0 이전 Python 버전을 사용하는 경우 결과를 문자열로 형식화하기 전에 부동 소수점 이하 자릿수(예: 12)로 반올림합니다. 이 접근 방식은 덜 정확하지만 대부분의 경우 잘 작동합니다.
def truncate(f, n): '''Truncates/pads a float f to n decimal places without rounding''' s = '%.12f' % f i, p, d = s.partition('.') return '.'.join([i, (d+'0'*n)[:n]])
지능형 반올림은 의도하지 않은 숫자가 반올림되는 잘못된 긍정을 생성할 수 있습니다. 이를 방지하기 위해 고정 정밀도를 사용할 수 있습니다. 또한 이전 Python 버전에서는 부정확한 십진수 표현이 생성될 수 있습니다. 이러한 경우에는 12자리 해결 방법을 사용하는 것이 좋습니다.
위 내용은 반올림하지 않고 Python에서 부동 소수점 값을 자르는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!