표시하고 싶습니다 :
49
같이 49.00
과:
54.9
같이 54.90
소수점 길이 또는 소수점 자리가 있는지 여부에 관계없이 소수점 이하 두 자리로 표시하고 Decimal
싶습니다. 효율적인 방식으로하고 싶습니다. 돈 가치를 표시하는 것이 목적입니다.
예를 들어 4898489.00
표시하고 싶습니다 :
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()
문자열 서식%
새로운 스타일과 서식 문자열 .format()
문자열 서식을파이썬 3.6에는 리터럴 문자열 보간법 (f- 문자열이라고도 함)이 도입되었으므로 이제는 다음과 같이 훨씬 간결하게 작성할 수 있습니다.
>>> f'{pi:.2f}'
'3.14'
format
을 반환하지 str
아닌 float
: print type({0:.2f}".format(pi))
리턴 <type 'str'>
.
return
. 정신적으로 print
s로 변경하십시오 .
"{:.2f}".format(pi)
0:
합니까? 나는 가정 .
파이썬 문자열의 일부입니다
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'
0
애프터 %
및 랩 할 필요가 num
A의가 tuple
.
r = 1; "%s" % r; r = (1, 2); "%s" % r
대 r = 1; "%s" % (r,); r = (1,2 ); "%s" % (r,)
. 따라서 파이썬에서 가장 정교한 코딩 스타일은 이제 무조건 튜플을 사용합니다 (파이썬 3은 문자열 형식화의 전체 방법을 오류가 발생하기 쉬운 것으로 사용하지 않았습니다).
문자열 형식화 연산자를 다음 과 같이 사용할 수 있습니다 .
num = 49
x = "%.2f" % num # x is now the string "49.00"
"효율적인"이 무슨 뜻인지 잘 모르겠습니다. 이것은 응용 프로그램의 병목 현상이 아닙니다 . 프로그램이 느리게 실행중인 경우 먼저 프로파일을 작성하여 핫스팟을 찾은 다음 최적화하십시오.
통화에이 값을 사용하고 있고 값을 구분하여 사용하려는 ,
경우
$ {:,.f2}.format(currency_value)
.
예 :
currency_value = 1234.50
$ {:,.f2}.format(currency_value)
-->
$ 1,234.50
여기에 얼마 전에 쓴 코드가 있습니다.
print("> At the end of year " + year_string + " total paid is \t$ {:,.2f}".format(total_paid))
> At the end of year 1 total paid is $ 43,806.36
> At the end of year 2 total paid is $ 87,612.72
> At the end of year 3 total paid is $ 131,419.08
> At the end of year 4 total paid is $ 175,225.44
> At the end of year 5 total paid is $ 219,031.80 <-- Note .80 and not .8
> At the end of year 6 total paid is $ 262,838.16
> At the end of year 7 total paid is $ 306,644.52
> At the end of year 8 total paid is $ 350,450.88
> At the end of year 9 total paid is $ 394,257.24
> At the end of year 10 total paid is $ 438,063.60 <-- Note .60 and not .6
> At the end of year 11 total paid is $ 481,869.96
> At the end of year 12 total paid is $ 525,676.32
> At the end of year 13 total paid is $ 569,482.68
> At the end of year 14 total paid is $ 613,289.04
> At the end of year 15 total paid is $ 657,095.40 <-- Note .40 and not .4
> At the end of year 16 total paid is $ 700,901.76
> At the end of year 17 total paid is $ 744,708.12
> At the end of year 18 total paid is $ 788,514.48
> At the end of year 19 total paid is $ 832,320.84
> At the end of year 20 total paid is $ 876,127.20 <-- Note .20 and not .2
가장 쉬운 방법의 예는 다음과 같습니다.
코드 :
>>> points = 19.5
>>> total = 22
>>>'Correct answers: {:.2%}'.format(points/total)
`
출력 : 정답 : 88.64 %