Python Decimals 형식
이런 식으로 파이썬 십진수를 포맷하는 좋은 방법은 무엇입니까?
1.00 -> '1'
1.20 -> '1.2'
1.23 -> '1.23'
1.234 -> '1.23'
1.2345 -> '1.23'
Python 2.6 이상이있는 경우 다음을 사용하십시오 format
.
'{0:.3g}'.format(num)
Python 2.5 이하 :
'%.3g'%(num)
설명:
{0}
format
첫 번째 인수를 인쇄하도록 지시 합니다 num
. 이 경우 .
콜론 (:) 뒤의 모든 항목은 format_spec
.
.3
정밀도를 3으로 설정합니다.
g
중요하지 않은 0을 제거합니다. http://en.wikipedia.org/wiki/Printf#fprintf 참조
예를 들면 :
tests=[(1.00, '1'),
(1.2, '1.2'),
(1.23, '1.23'),
(1.234, '1.23'),
(1.2345, '1.23')]
for num, answer in tests:
result = '{0:.3g}'.format(num)
if result != answer:
print('Error: {0} --> {1} != {2}'.format(num, result, answer))
exit()
else:
print('{0} --> {1}'.format(num,result))
수확량
1.0 --> 1
1.2 --> 1.2
1.23 --> 1.23
1.234 --> 1.23
1.2345 --> 1.23
Python 3.6 이상을 사용하면 다음을 사용할 수 있습니다 f-strings
.
In [40]: num = 1.234; f'{num:.3g}'
Out[40]: '1.23'
Justin의 대답의 첫 부분 만 정확합니다. .3은 정밀도가 아니라 총 자릿수이므로 "% .3g"사용은 모든 경우에 작동하지 않습니다. 1000.123과 같은 숫자로 시도하면 중단됩니다.
그래서 저는 Justin이 제안한 것을 사용합니다.
>>> ('%.4f' % 12340.123456).rstrip('0').rstrip('.')
'12340.1235'
>>> ('%.4f' % -400).rstrip('0').rstrip('.')
'-400'
>>> ('%.4f' % 0).rstrip('0').rstrip('.')
'0'
>>> ('%.4f' % .1).rstrip('0').rstrip('.')
'0.1'
트릭을 수행하는 함수는 다음과 같습니다.
def myformat(x):
return ('%.2f' % x).rstrip('0').rstrip('.')
다음은 귀하의 예입니다.
>>> myformat(1.00)
'1'
>>> myformat(1.20)
'1.2'
>>> myformat(1.23)
'1.23'
>>> myformat(1.234)
'1.23'
>>> myformat(1.2345)
'1.23'
편집하다:
다른 사람들의 답변을보고 실험을하면서 g가 당신을 위해 모든 스트리핑 작업을한다는 것을 알았습니다. 그래서,
'%.3g' % x
훌륭하게 작동하며 다른 사람들이 제안하는 것과 약간 다릅니다 ( '{0 : .3}'. format () 항목 사용). 나는 당신의 선택을 생각한다.
Python의 표준 문자열 형식 지정 방법을 사용하십시오 .
>>> "{0:.2}".format(1.234232)
'1.2'
>>> "{0:.3}".format(1.234232)
'1.23'
2.6 미만의 Python 버전을 사용하는 경우
>>> "%f" % 1.32423
'1.324230'
>>> "%.2f" % 1.32423
'1.32'
>>> "%d" % 1.32423
'1'
참고 URL : https://stackoverflow.com/questions/2389846/python-decimals-format
'Programing' 카테고리의 다른 글
numpy 배열에서 곱하기 (0) | 2020.11.27 |
---|---|
Java에서 교착 상태 감지 (0) | 2020.11.27 |
jQuery 지연이 작동하지 않음 (0) | 2020.11.27 |
누구나 모든 IP에서 액세스 할 수 있도록 CIDR / IP를 설정 하시겠습니까? (0) | 2020.11.27 |
(유사한) 문자열 집합에서 접두사 결정 (0) | 2020.11.27 |