sourcecode

파이썬에서 두 배의 정밀 부동값?

codebag 2023. 8. 26. 11:22
반응형

파이썬에서 두 배의 정밀 부동값?

float보다 더 정확한 데이터 유형이 있습니까?

Python의 기본 제공floattype은 두 배의 정밀도를 가지고 있습니다(이것은 C입니다).double자바의 Cython에서.double이튼에서).더 정확한 정보가 필요하면 NumPy를 가져와 사용합니다.numpy.float128.

십진수 데이터 유형

  • 하드웨어 기반 이진 부동 소수점과 달리 십진수 모듈에는 사용자가 변경할 수 있는 정밀도(기본값은 28자리)가 있으며 특정 문제에 대해 필요한 만큼 클 수 있습니다.

성능 문제로 인해 압박을 받는 경우 GMPY를 살펴봅니다.

일부 응용 프로그램의 경우 부동 소수점 번호 대신 사용할 수 있습니다.

>>> from fractions import Fraction
>>> Fraction(1, 3**54)
Fraction(1, 58149737003040059690390169)

(다른 애플리케이션의 경우, 다른 응답자들이 제안한 바와 같이 가 있습니다.)

십진법이 필요할 수 있습니다.

>>> from decimal import Decimal    
>>> Decimal(2.675)
Decimal('2.67499999999999982236431605997495353221893310546875')

부동 소수점 산술

여기 제 해결책이 있습니다.저는 먼저 random.uniform으로 난수를 만들고, 두 배의 정밀도로 문자열로 포맷한 다음 다시 float로 변환합니다.'.2f'를 '.3f' 등으로 변경하여 정밀도를 조정할 수 있습니다.

import random
from decimal import Decimal

GndSpeedHigh = float(format(Decimal(random.uniform(5, 25)), '.2f'))
GndSpeedLow = float(format(Decimal(random.uniform(2, GndSpeedHigh)), '.2f'))
GndSpeedMean = float(Decimal(format(GndSpeedHigh + GndSpeedLow) / 2, '.2f')))
print(GndSpeedMean)

언급URL : https://stackoverflow.com/questions/6663272/double-precision-floating-values-in-python

반응형