Wie Sie sich richtig zu normalisieren, eine floating-point-Wert in C++?

Vielleicht verstehe ich nicht die IEEE754-standard, der viel, aber da eine Reihe von floating-point-Werte float oder double zum Beispiel :

56.543f 3238.124124f 121.3f ...

sind Sie in der Lage, konvertieren Sie Sie in Werten von 0 zu 1, so dass Sie zu normalisieren, indem Sie einen entsprechenden gemeinsamen Faktor und zu überlegen, was ist der maximale Wert und der minimale Wert in der Menge.

Nun mein Punkt ist, dass in dieser Verwandlung, ich brauche eine viel höhere Präzision für die Ziel -, die reicht von 0 zu 1 wenn im Vergleich zu der Genauigkeit, die ich brauche, in den ersten ein, vor allem, wenn die Werte in der ersten Reihe sind für ein breites Spektrum von numerischen Werten ( wirklich große und sehr kleine Werte ).

Wie die float oder die double ( oder die IEEE-754-standard, wenn Sie möchten ) geben kann, mit dieser situation umzugehen, während die Bereitstellung von mehr Präzision für die zweite Gruppe von Werten zu wissen, dass ich im Grunde nicht brauchen einen ganzzahligen Teil ?

Oder er damit nicht zurechtkommt und ich brauche festen Punkt Mathematik mit einem ganz anderen Typ ?

  • beachten Sie, dass ieee-floats sind nicht zwingend in c++
  • Gibt es compiler, die nicht implementieren IEEE 754? Oder besser gesagt, die modernen CPU-Architekturen nicht umsetzen?
  • Es ist normalerweise nicht der compiler, das ist die hardware. Kann ich derzeit denke, ist, VAX.
  • SSE-Implementierungen unterstützen FTZ (Flush to zero) und DAZ (Denormals sind null) Optimierungen, die nicht konform zu IEEE 754. Je nach compiler/CRT-dies ist die Standardeinstellung.
  • Warum wollen Sie die Karte Werte auf [0, 1]? Wenn Sie möchten, dies zu tun für einige wahrgenommene Präzision Verbesserung, dann tun Sie es nicht, weil es wird nicht gewinnen Sie nichts. Wenn Sie tun es aus einem anderen Grund, dann sollten Sie erklären, dass, so dass wir verstehen können, wie es interagiert mit floating-point-Arithmetik.
  • nichts zu tun mit der Wahrnehmung, es geht um die algorithmen, die ich auf diese zahlen und die visuelle Darstellung von Ihnen zu ( die GUI meines Programms ), so dass ich im Grunde muss normalisierte zahlen.
  • in diesem Fall bezieht sich nicht auf Fehler, die wahrgenommen werden, die von einem viewer der Daten, sondern durch die Wahrnehmung des Fragestellers, dass es eine Steigerung in der Genauigkeit der Fließkomma-in das Intervall [0, 1] im Vergleich zu einigen anderen im Intervall [0, M].

InformationsquelleAutor user2485710 | 2013-12-09
Schreibe einen Kommentar