파이썬 소수점 자리수 표시 - paisseon sosujeom jalisu pyosi

표시하고 싶습니다 :

Show

49 같이 49.00

과:

54.9 같이 54.90

소수점 길이 또는 소수점 자리가 있는지 여부에 관계없이 소수점 이하 두 자리로 표시하고 Decimal싶습니다. 효율적인 방식으로하고 싶습니다. 돈 가치를 표시하는 것이 목적입니다.

예를 들어 4898489.00



답변

아마도 모듈 의 Decimal()객체를 사용하고 있다고 가정 decimal합니까? (임의로 큰 숫자가있는 소수점보다 정확하게 두 자리의 정밀도가 필요한 경우 반드시 있어야하며 질문 제목이 제안하는 것입니다 …)

그렇다면 문서 의 10 진수 FAQ 섹션에 유용한 질문 / 응답 쌍이 있습니다.

Q. 소수점 이하 두 자리의 고정 소수점 응용 프로그램에서 일부 입력에는 여러 자리가 있으므로 반올림해야합니다. 다른 사람은 초과 자릿수가 없어야하며 유효성을 검사해야합니다. 어떤 방법을 사용해야합니까?

A. quantize () 메소드는 고정 소수점 이하 자릿수로 반올림합니다. 부정확 한 트랩이 설정된 경우 유효성 검사에도 유용합니다.

>>> TWOPLACES = Decimal(10) ** -2       # same as Decimal('0.01')
>>> # Round to two places
>>> Decimal('3.214').quantize(TWOPLACES)
Decimal('3.21')
>>> # Validate that a number does not exceed two places
>>> Decimal('3.21').quantize(TWOPLACES, context=Context(traps=[Inexact]))
Decimal('3.21')
>>> Decimal('3.214').quantize(TWOPLACES, context=Context(traps=[Inexact]))
Traceback (most recent call last):
   ...
Inexact: None

다음 질문은

Q. 유효한 두 자리 입력이 있으면 응용 프로그램 전체에서 불변을 유지하는 방법은 무엇입니까?

다른 유용한 정보와 함께 이에 대한 대답이 필요한 경우 앞에서 언급 한 문서 섹션을 참조하십시오 . 또한 Decimal소수점을 넘어 두 자리의 정밀도로 s 를 유지하는 경우 (소수점 왼쪽에 모든 자리를 유지하고 오른쪽에 두 자리를 유지하고 더 이상 …을 유지하는 데 필요한만큼의 정밀도를 의미 함), 그런 다음 문자열을 문자열로 변환하면 str정상적으로 작동합니다.

str(Decimal('10'))
# -> '10'
str(Decimal('10.00'))
# -> '10.00'
str(Decimal('10.000'))
# -> '10.000'


답변

당신은 사용해야하는 새로운 형식의 사양을 사용자의 값을 표현하는 방법을 정의합니다 :

>>> from math import pi  # pi ~ 3.141592653589793
>>> '{0:.2f}'.format(pi)
'3.14'

이 문서는 때때로 약간 애매 모호 할 수 있으므로 다음과 같은 읽기 쉬운 참조를 권장합니다.

  • 파이썬 문자열 형식 요리 책 : 새로운 스타일의 쇼 예 .format()문자열 서식
  • pyformat.info : 오래된 스타일의 비교 %새로운 스타일과 서식 문자열 .format()문자열 서식을

파이썬 3.6에는 리터럴 문자열 보간법 (f- 문자열이라고도 함)이 도입되었으므로 이제는 다음과 같이 훨씬 간결하게 작성할 수 있습니다.

>>> f'{pi:.2f}'
'3.14'


답변

Python 문서 의 문자열 형식화 작업 섹션에는 원하는 답변이 포함되어 있습니다. 한마디로 :

"%0.2f" % (num,)

몇 가지 예 :

>>> "%0.2f" % 10
'10.00'
>>> "%0.2f" % 1000
'1000.00'
>>> "%0.2f" % 10.1
'10.10'
>>> "%0.2f" % 10.120
'10.12'
>>> "%0.2f" % 10.126
'10.13'


답변

문자열 형식화 연산자를 다음 과 같이 사용할 수 있습니다 .

num = 49
x = "%.2f" % num  # x is now the string "49.00"

“효율적인”이 무슨 뜻인지 잘 모르겠습니다. 이것은 응용 프로그램의 병목 현상이 아닙니다 . 프로그램이 느리게 실행중인 경우 먼저 프로파일을 작성하여 핫스팟을 찾은 다음 최적화하십시오.


답변

>>> print "{:.2f}".format(1.123456)
1.12

당신은 변경할 수 있습니다 22f표시하려는 소수 지점의 수에.

편집하다:

에서 다음 Python3.6과 같이 번역됩니다.

>>> print(f"{1.1234:.2f}")
1.12


답변

.format은 변수 형식을 처리하는보다 읽기 쉬운 방법입니다.

'{:.{prec}f}'.format(26.034, prec=2)


답변

파이썬 3 에서이 작업을 수행하는 방법은 다음과 같습니다.

'{:.2f}'.format(number)