python int to float Representation

OP #7628336
Lesenswert?
• ▲
▼

Danke. Ich hab wohl dann noch ein anderes Problem.

In einer Klasse ist ein Parameter mit dem Typ float. Wenn ich den Wert auf 1.0 setzte erhalte ich in der python Console den Wert decimal representation = 2.350988701644575e-38. Im byte array wird der Wert so dargestellt: 00000001

#7628352
Lesenswert?
• ▲
▼

Zo R. schrieb:

In einer Klasse ist ein Parameter mit dem Typ float. Wenn ich den Wert auf 1.0 setzte erhalte ich in der python Console den Wert decimal representation = 2.350988701644575e-38. Im byte array wird der Wert so dargestellt: 00000001

Wenn du die interne Repräsentation von int(1) als float interpretierst, dann könnte dessen decimal representation eventuell dem entsprechen was du in der Python Console siehst.

Und wo ist jetzt dein Problem?

LG, Sebastian

#7628919
Lesenswert?
• ▲
▼

Nicht das es in irgend einer Form Sinn ergeben würde was du da vor hast…

1
#!/usr/bin/python3
2

3
from struct import pack,unpack
4

5
print(f"native float in native int         {unpack('I', pack('f',1))[0]:032b}")
6
print(f"native float in bigendian int      {unpack('>I', pack('f',1))[0]:032b}")
7
print(f"big endian float in native int     {unpack('I', pack('>f',1))[0]:032b}")
8
print(f"big endian float in bigendian int  {unpack('>I', pack('>f',1))[0]:032b}")
9

10
print(f"native int in native float         {unpack('f', pack('I',1))[0]}")
11
print(f"native int in bigendian float      {unpack('>f', pack('I',1))[0]}")
12
print(f"big endian int in native float     {unpack('f', pack('>I',1))[0]}")
13
print(f"big endian int in bigendian float  {unpack('>f', pack('>I',1))[0]}")
1
native float in native int         00111111100000000000000000000000
2
native float in bigendian int      00000000000000001000000000111111
3
big endian float in native int     00000000000000001000000000111111
4
big endian float in bigendian int  00111111100000000000000000000000
5
native int in native float         1.401298464324817e-45
6
native int in bigendian float      2.350988701644575e-38
7
big endian int in native float     2.350988701644575e-38
8
big endian int in bigendian float  1.401298464324817e-45

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.