Drijvende waarden met dubbele precisie in Python?

Zijn er gegevenstypen met een betere precisie dan float?


Antwoord 1, autoriteit 100%

Decimaal gegevenstype

  • In tegenstelling tot op hardware gebaseerde binaire drijvende komma, heeft de decimale module een door de gebruiker aanpasbare precisie (standaard 28 plaatsen) die zo groot kan zijn als nodig is voor een bepaald probleem.

Als je onder druk staat door prestatieproblemen, kijk dan eens op GMPY


Antwoord 2, autoriteit 94%

Python’s ingebouwde floattype heeft dubbele precisie (het is een C doublein CPython, een Java doublein Jython). Als je meer precisie nodig hebt, download dan NumPyen gebruik de numpy.float128.


Antwoord 3, autoriteit 29%

Voor sommige toepassingen kunt u Fractiongebruiken in plaats van getallen met drijvende komma.

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

(Voor andere toepassingen is er decimal, zoals gesuggereerd door de andere reacties.)


Antwoord 4, autoriteit 25%

Misschien heb je decimaal nodig

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

Drijvende-komma-rekenkunde


Antwoord 5, autoriteit 2%

Hier is mijn oplossing. Ik maak eerst willekeurige getallen met random.uniform, formatteer ze in string met dubbele precisie en converteer ze dan terug naar float. U kunt de precisie aanpassen door ‘.2f’ te veranderen in ‘.3f’ enz..

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)

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes