Guten Morgen, in python habe ich aktuell ein Problem mit der Representation eines int Wertes in einen float. Wie kann sowas in python umgesetzt werden?
Was genau meinst du?
1 | >>> x=float(42) |
2 | >>> type(x) |
3 | <class 'float'> |
4 | >>> print(x) |
5 | 42.0 |
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
:
Bearbeitet durch User
Klingt konfus. Bitte bringe ein nachvollziehbares Codebeispiel.
Das ist etwas komplex das in ein Beispiel zu packen. Ist ein komplexes Projekt.
Das hilft aber nichts. Mich dünkt, dass du irgendwas versuchst, was so nicht von der Sprache abgedeckt ist.
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
Sebastian W. schrieb: > 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. Sie könnte auch ganz anders sein. :-) Python benutzt ja int-Objekte, die beliebig große Zahlen abbilden können.
Zo R. schrieb: > Wert decimal representation = 2.350988701644575e-38. Im byte array wird > der Wert so dargestellt: 00000001 stimmt nicht ganz 2.35xxx ist die float interpretation von 00000001, als int wäre es die 1. also wird das problem im code oder Eingabe erzeugt in dem es falsch interpretiert wird.
:
Bearbeitet durch User
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 |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.