>  기사  >  백엔드 개발  >  반올림하지 않고 Python에서 부동 소수점 값을 특정 소수 자릿수로 자르는 방법은 무엇입니까?

반올림하지 않고 Python에서 부동 소수점 값을 특정 소수 자릿수로 자르는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 00:25:02264검색

How to Truncate Float Values to a Specific Number of Decimal Places in Python without Rounding?

부동 소수점 값을 특정 소수 자릿수로 자르는 방법

Python에서는 부동 소수점에서 숫자를 제거하여 고정된 소수 자릿수를 얻을 수 있습니다. 소수점 이하 자릿수. 다음 예를 고려하십시오.

1.923328437452 → 1.923

float를 소수점 세 자리까지 자르면 원하는 출력이 1.923이 됩니다.

해결책

함수 아래에서는 이 작업을 수행합니다.

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으로 채워 초과 자릿수가 잘리도록 합니다.

과학적 표기법 처리

이 함수는 다음을 확인합니다. 부동소수점은 과학 표기법(e 또는 E)으로 표시되며 지수를 보존하기 위해 다른 형식 함수를 사용합니다.

이전 Python 버전

2.7 이전 Python 버전의 경우 , 부동 소수점을 자를 수는 있지만 부동 소수점 형식 지정 메커니즘의 제한으로 인해 결과가 정확하지 않을 수 있습니다. 가능한 해결 방법은 자르기 전에 float를 더 높은 정밀도로 반올림하는 것입니다.

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에서 부동 소수점 값을 특정 소수 자릿수로 자르는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.