Gast
#2025569
Ich stehe gerade aufm Schlauch: Wenn ich eine Zahl wie 0.78 hab, wie kann ich die nächstgelegene Fixed-Point-Zahl herbekommen? z.B. 0.78 => 0.75 = 0.11 (binär repräsentation)
|
Anzeige
|
Nächstgelegene Fixed-Point Zahl zu Floating-Pointzahl bekommen
Gast
#2025569
Ich stehe gerade aufm Schlauch: Wenn ich eine Zahl wie 0.78 hab, wie kann ich die nächstgelegene Fixed-Point-Zahl herbekommen? z.B. 0.78 => 0.75 = 0.11 (binär repräsentation)
Gast
#2025585
Ich würde mit 2^(Anzahl Nachkommastellen) multiplizieren und dann binär wandeln. Dann muss man den Dezimalpunkt wieder richtig einsetzen aber das ist für HW ja egal. lg flint
Gast
#2025589
indem du beim Zurückrechnen rundest. Das geht z.B. indem man: int i = round(floatZahl * (1<<FixGenauikeit)); i >>= FixGenauikeit; Ergibt: round(0.78*8 )= 6 (.24 abgeschnitten); 6 um 3 bit geschiftet ist: 0.110 Das ist die nächst liegende Zahl. 0.82 -> 0.82*8 = 6.56 -> 7; 7 um 3 bit geschiftet ist 0.111 also fixkommatechnisch 0.875 was näher dran ist als 0.75 (bei dieser Präzision.)
Gast
#2025640
Danke euch, genau das habe ich gesucht. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|