Heim  >  Artikel  >  Backend-Entwicklung  >  Wie viele Bytes belegt die Gleitkommazahl von Python?

Wie viele Bytes belegt die Gleitkommazahl von Python?

anonymity
anonymityOriginal
2019-06-12 11:24:4514755Durchsuche

Gleitkommazahlen werden mit der nativen doppelten Genauigkeit (64 Bit) der Gleitkommazahl auf der Maschine dargestellt. Bietet eine Genauigkeit von ca. 17 Stellen und einen Exponenten im Bereich von -308 bis 308. Es ist dasselbe wie der Double-Typ in der C-Sprache. Python unterstützt keine 32-Bit-Gleitkommazahlen mit einfacher Genauigkeit. Wenn Ihr Programm eine präzise Kontrolle über Intervalle und numerische Genauigkeit erfordert, sollten Sie die Verwendung der Numpy-Erweiterungsbibliothek in Betracht ziehen.

Python 3.X bietet standardmäßig eine Genauigkeit von 17 Stellen für Gleitkommazahlen.

Wie viele Bytes belegt die Gleitkommazahl von Python?

Beliebte Erklärung zu einfacher und doppelter Präzision:

Einfache und doppelte Präzision, ihr Typ Der Spezifizierer ist ein Float-Spezifizierer mit einfacher Genauigkeit und ein Double-Spezifizierer mit doppelter Genauigkeit. In Turbo C belegt der Typ mit einfacher Genauigkeit 4 Byte (32 Bit) Speicherplatz, sein Wertebereich liegt zwischen 3,4E-38 und 3,4E+38 und kann nur sieben signifikante Ziffern bereitstellen. Der Typ mit doppelter Genauigkeit belegt 8 Byte (64 Bit) Speicherplatz, sein Wertebereich liegt zwischen 1,7E-308 und 1,7E+308 und kann 16 signifikante Ziffern bereitstellen.

Erfordert eine Präzisionsanalyse mit mehr als 17 Stellen

Python verwendet standardmäßig eine Genauigkeit von 17 Dezimalstellen, aber hier gibt es ein Problem , wenn wir Was tun, wenn die Berechnung eine höhere Genauigkeit erfordert (mehr als 17 Dezimalstellen)?

1. Formatierung verwenden (nicht empfohlen)

>>> a = "%.30f" % (1/3)
>>> a
'0.333333333333333314829616256247'

kann angezeigt werden, ist aber nicht korrekt und die folgenden Zahlen sind oft bedeutungslos.

2. Verwenden Sie das Dezimalmodul mit hoher Präzision und kooperieren Sie mit 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

Die Standardkontextgenauigkeit beträgt 28 Bit, die auf 50 Bit oder sogar höher eingestellt werden kann . Auf diese Weise können Sie bei der Analyse komplexer Gleitkommazahlen eine höhere kontrollierbare Präzision erzielen. Tatsächlich können Sie im Kontext auf den Parameter „rounding=ROUND_HALF_EVEN“ achten. ROUND_HALF_EVEN, wenn halb, nahezu gerade.

Das obige ist der detaillierte Inhalt vonWie viele Bytes belegt die Gleitkommazahl von Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn