Programing

부동 소수점 숫자를 특정 정밀도로 변환 한 다음 문자열로 복사

lottogame 2020. 7. 6. 07:49
반응형

부동 소수점 숫자를 특정 정밀도로 변환 한 다음 문자열로 복사


부동 소수점 숫자가 135.12345678910있습니다. 해당 값을 문자열에 연결하고 싶지만 만 원합니다 135.123456789. 인쇄하면 다음과 같은 작업을 수행하여 쉽게 수행 할 수 있습니다.

print "%.9f" % numvar

numvar내 원래 수있는. 이 작업을 수행하는 쉬운 방법이 있습니까?


Python <3 (예 : 2.6 [주석 참조] 또는 2.7)에서는 두 가지 방법이 있습니다.

# Option one
older_method_string = "%.9f" % numvar

# Option two
newer_method_string = "{:.9f}".format(numvar)

그러나 3 이상의 Python 버전 (예 : 3.2 또는 3.3)의 경우 옵션 2가 선호 됩니다.

옵션 2에 대한 자세한 내용 은 Python 설명서의 문자열 형식에 대한 링크를 제안 합니다 .

옵션 1에 대한 자세한 정보는 이 링크로 충분하고 다양한 플래그에 대한 정보를 제공합니다 .

Python 3.6 (공식적으로 2016 년 12 월에 릴리스 됨)은 f문자열 리터럴을 추가했으며 여기 에서 자세한 정보를 참조하십시오.str.format방법 을 확장합니다 ( f"{numvar:.9f}"원래 문제 해결하는 중괄호 사용 ).

# Option 3 (versions 3.6 and higher)
newest_method_string = f"{numvar:.9f}"

문제를 해결합니다. 자세한 내용은 @ Or-Duan의 답변을 확인하십시오 . 그러나이 방법은 빠릅니다 .


파이썬 3.6 | 2017 년

명확하게하기 위해 f 문자열 형식을 사용할 수 있습니다 . 이것은 format메소드 와 거의 동일한 구문을 가지고 있지만 조금 더 멋지게 만듭니다.

예:

print(f'{numvar:.9f}')

새로운 f 문자열에 대한 추가 정보 :

여기에 이미지 설명을 입력하십시오


사용 round:

>>> numvar = 135.12345678910
>>> str(round(numvar, 9))
'135.123456789'

서식을 지정하는 인쇄가 아니며 문자열의 속성이므로 사용할 수 있습니다.

newstring = "%.9f" % numvar

런타임까지 정밀도를 알 수없는 경우이 다른 형식화 ​​옵션이 유용합니다.

>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'

9 자리로 정밀도를 설정하려면 다음을 수행하십시오.

print "%.9f" % numvar

2 자리의 정밀도를 반환합니다.

print "%.2f" % numvar 

2 자리의 정밀도를 반환하고 부동 변환 된 값 :

numvar = 4.2345
print float("%.2f" % numvar) 

str함수는 버그가 있습니다. 다음을 시도하십시오. '0,196553'이 표시되지만 올바른 출력은 '0,196554'입니다. 때문에 str함수의 기본값은 ROUND_HALF_UP입니다.

>>> value=0.196553500000 
>>> str("%f" % value).replace(".", ",")

참고 URL : https://stackoverflow.com/questions/15263597/convert-floating-point-number-to-a-certain-precision-and-then-copy-to-string

반응형