> 백엔드 개발 > 파이썬 튜토리얼 > Python의 부동 소수점 숫자는 몇 바이트를 차지합니까?

Python의 부동 소수점 숫자는 몇 바이트를 차지합니까?

anonymity
풀어 주다: 2019-06-14 09:53:17
원래의
14774명이 탐색했습니다.

부동 소수점 숫자는 컴퓨터에서 부동 소수점 숫자의 기본 배정밀도(64비트)로 표현됩니다. 약 17자리의 정밀도와 -308부터 308까지의 지수를 제공합니다. C언어의 double형과 같습니다. Python은 32비트 단정밀도 부동 소수점 숫자를 지원하지 않습니다. 프로그램에서 간격과 수치 정밀도에 대한 정밀한 제어가 필요한 경우 numpy 확장 라이브러리 사용을 고려해보세요.

Python 3.X는 부동 소수점 숫자에 대해 기본적으로 17자리의 정밀도를 제공합니다.

Python의 부동 소수점 숫자는 몇 바이트를 차지합니까?

단정밀도와 배정밀도에 대한 인기 있는 설명:

# 🎜🎜#단정밀도 및 배정밀도 유형의 유형 지정자는 부동 소수점 단정밀도 지정자와 배정밀도 지정자입니다. Turbo C에서 단정밀도 유형은 4바이트(32비트)의 메모리 공간을 차지하고 값 범위는 3.4E-38~3.4E+38이며 유효 숫자 7개만 제공할 수 있습니다. 배정밀도 유형은 8바이트(64비트)의 메모리 공간을 차지하고 값 범위는 1.7E-308~1.7E+308이며 유효 숫자 16자리를 제공할 수 있습니다.

정밀도 분석에 17자리 이상의 정밀도가 필요함

Python의 기본값은 소수점 이하 17자리이지만, 여기에 질문이 있습니다. 즉, 계산에 더 높은 정밀도(소수점 17자리 이상)를 사용해야 하는 경우 어떻게 해야 합니까?

1. 서식 사용(권장하지 않음)

>>> a = "%.30f" % (1/3)
>>> a
'0.333333333333333314829616256247'
로그인 후 복사

은 표시할 수 있지만 정확하지 않으며 다음 숫자는 의미가 없는 경우가 많습니다.

2. 높은 정밀도의 십진 모듈을 사용하고 getcontext

>>> from decimal import *
>>> print(getcontext())
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
>>> getcontext().prec = 50
>>> b = Decimal(1)/Decimal(3)
>>> b
Decimal('0.33333333333333333333333333333333333333333333333333')
>>> c = Decimal(1)/Decimal(17)
>>> c
Decimal('0.058823529411764705882352941176470588235294117647059')
>>> float(c)
0.058823529411764705
로그인 후 복사

와 협력합니다. 기본 컨텍스트 정밀도는 28비트이며 다음과 같이 설정할 수 있습니다. 50비트 또는 그 이상도 괜찮습니다. 이러한 방식으로 복잡한 부동 소수점 숫자를 분석할 때 더 높은 제어 정밀도를 가질 수 있습니다. 실제로 컨텍스트에서 rounding=ROUND_HALF_EVEN 매개변수에 주의를 기울일 수 있습니다. ROUND_HALF_EVEN, 반이면 짝수에 가깝습니다.

위 내용은 Python의 부동 소수점 숫자는 몇 바이트를 차지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿