IT story

소수점 이하 2 자리를 항상 표시하도록 소수점 이하 자릿수를 어떻게 지정할 수 있습니까?

hot-time 2020. 4. 30. 07:34
반응형

소수점 이하 2 자리를 항상 표시하도록 소수점 이하 자릿수를 어떻게 지정할 수 있습니까?


표시하고 싶습니다 :

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'

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

Python 3.6 introduced literal string interpolation (also known as f-strings) so now you can write the above even more succinct as:

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

The String Formatting Operations section of the Python documentation contains the answer you're looking for. In short:

"%0.2f" % (num,)

Some examples:

>>> "%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'

You can use the string formatting operator as so:

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

I'm not sure what you mean by "efficient" -- this is almost certainly not the bottleneck of your application. If your program is running slowly, profile it first to find the hot spots, and then optimize those.


>>> 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)

여러 매개 변수가 있으면 사용할 수 있습니다

 print('some string {0:.2f} & {1:.2f}'.format(1.1234,2.345))
 >>> some string 1.12 & 2.35

이건 어떤가요

print round(20.2564567 , 2)    >>>>>>>        20.25


print round(20.2564567 , 4)    >>>>>>>        20.2564

참고 URL : https://stackoverflow.com/questions/1995615/how-can-i-format-a-decimal-to-always-show-2-decimal-places

반응형