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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren