Möglichkeit Double-Werte zu kürzen
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
abbildung
anforderung
auftreten
beste abbildung
bruch
code
double
formel
freien bereich
geschickt gebaute funktion
jemand
kurzen zahlen
menge
platz
riese
statistik
unterschiedlich hohen wahrscheinlichkeiten
url
wiederherstellen
zahl
-
Hallo,
dieses Thema ist nicht wirklich .NET-lastig da es sich eigentlich um ein allgemeines Programmierungs- (bzw. mathematisches) Problem handelt.
Kennt jemand eine gute Möglichkeit mehrere verschiedene (verschiedenstellige) Double-Werte mit einer Formel zu kürzen, um sie anschießend mit einer Formel wiederherstellen zu können?
Anforderungen:
- Es müssen numerische Were bleiben
- Sie müssen als String weniger Platz einnehmen (sprich es bringt nichts sie einfach zu dividieren)
Beispiel eines zu kürzenden Double-Arrays:
12345
-12.992
123.02
48
-8762
123794
217
Gibt es da eine Möglichkeit?
Danke im Voraus! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
yorecords schrieb:
Kennt jemand eine gute Möglichkeit mehrere verschiedene (verschiedenstellige) Double-Werte mit einer Formel zu kürzen, um sie anschießend mit einer Formel wiederherstellen zu können?
Könntest du das ein wenig mehr definieren? Kürzen wie ein Bruch? Auf 2 Nachkommastellen runden? Da ich nicht ganz verstehe, was du genau möchtest, ist es schwer dir zu helfen. Und ich glaube, das Problem dürften mehrere haben.
Liebe Grüße -
ggamee schrieb:
yorecords schrieb:
Kennt jemand eine gute Möglichkeit mehrere verschiedene (verschiedenstellige) Double-Werte mit einer Formel zu kürzen, um sie anschießend mit einer Formel wiederherstellen zu können?
Könntest du das ein wenig mehr definieren? Kürzen wie ein Bruch? Auf 2 Nachkommastellen runden? Da ich nicht ganz verstehe, was du genau möchtest, ist es schwer dir zu helfen. Und ich glaube, das Problem dürften mehrere haben.
Liebe Grüße
Hallo!
Sorry wenn ich mich unverständlich ausgedrückt habe. Ich suche irgend eine mathematische Zauberformel, die es mir erlaubt Zahlen sowohl vom Wert als auch von der visuellen Größe kleiner zu machen, aber eben so, dass man sie dann wiederherstellen kann.
Ein einfaches Beispiel:
Ausgangszahlen: 10, 20, 50
Verfahren zum Kürzen: x / 10
Gekürzt: 1, 2, 5
Dann kann man eben damit rechnen (mal egal was).. Und anschließend kann man die Rechnung und das Kürzungsverfahren invertieren und hat somit wieder genau die anfänglichen Zahlen.
Das war halt mal ein einfaches Beispiel, das aber keinen Sinn hätte, da wir als Ausgangszahl z.B. auch 1 haben könnten, was zu 0.1 werden würde und somit 2 Stellen mehr hätte. Ich suche also irgend eine Formel / einen Algorithmus, mit dem das möglich ist ohne das Risiko einzugehen, dass das genaue Gegenteil erreicht wird. Die Ausgangszahlen liegen irgendwo zwischen -999999999.99999999999 und 999999999.99999999999 (jedoch überwiegend Ganzzahlen).
Ich weiß, es ist nicht unbedingt einfach aber irgend einen Weg muss es doch geben.. -
Hallo yorecords,
ich verstehe zwar, was Du gerne hättest aber ich befürchte, dass das im Allgemeinen nicht funktioniert.
Der Grund ist der Folgende:
Du willst eine Menge von Zahlen auf eine andere Menge von Zahlen abbilden und zwar mit Hilfe einer bijektiven Abbildung.
D.h. die Funktion muss für zwei verschiedene Zahlen immer auch zwei verschiedene Werte zurückliefern und sie muss auch noch invertierbar sein.
Desweiteren sollen die Zahlen in Textdarstellung möglichst kurz sein.
Wenn Du keine Lücken in Deiner Ausgangsmenge hast, d.h. jede Zahl zwischen -999999999.99999999999 und 999999999.99999999999 auch auftreten kann, dann sind alle kurzen Zahlen bereits mit sich selbst belegt, weshalb die Identität bereits die beste Abbildung ist, die Deine Anforderungen erfüllt.
Wenn Du aber Lücken hast, d.h. Du z.B. weist, dass Zahlen zwischen 1000 und 10000 nicht auftreten, dann könnte man 9000 größere Werte auf diesen freien Bereich abbilden:
100000 -> 1000 100001 -> 1001 ... 109999 -> 9999 110000 -> 10000
Wenn Du keine Lücken hast, dann kannst Du evtl. noch mit Statistik was machen. Wenn Deine Zahlen nicht gleichmäßig verteilt sind, d.h. mit unterschiedlich hohen Wahrscheinlichkeiten auftreten, dann kannst Du Zahlen mit hoher Wahrscheinlichkeit auf niederwertige Ganzzahlen abbilden und die frei werdenden höherwertigen (längeren) Zahlen mit weniger wahrscheinlichen Werten assoziieren.
Damit ließe sich dann auch etwas Platz sparen. Allerdings benötigst Du dafür entweder eine geschickt gebaute Funktion die sich aus der Wahrscheinlichkeitsdichte ableitet oder eine riesen Look-Up-Table. -
darkpandemic schrieb:
Hallo yorecords,
ich verstehe zwar, was Du gerne hättest aber ich befürchte, dass das im Allgemeinen nicht funktioniert.
Der Grund ist der Folgende:
Du willst eine Menge von Zahlen auf eine andere Menge von Zahlen abbilden und zwar mit Hilfe einer bijektiven Abbildung.
D.h. die Funktion muss für zwei verschiedene Zahlen immer auch zwei verschiedene Werte zurückliefern und sie muss auch noch invertierbar sein.
Desweiteren sollen die Zahlen in Textdarstellung möglichst kurz sein.
Wenn Du keine Lücken in Deiner Ausgangsmenge hast, d.h. jede Zahl zwischen -999999999.99999999999 und 999999999.99999999999 auch auftreten kann, dann sind alle kurzen Zahlen bereits mit sich selbst belegt, weshalb die Identität bereits die beste Abbildung ist, die Deine Anforderungen erfüllt.
Wenn Du aber Lücken hast, d.h. Du z.B. weist, dass Zahlen zwischen 1000 und 10000 nicht auftreten, dann könnte man 9000 größere Werte auf diesen freien Bereich abbilden:
100000 -> 1000 100001 -> 1001 ... 109999 -> 9999 110000 -> 10000
Wenn Du keine Lücken hast, dann kannst Du evtl. noch mit Statistik was machen. Wenn Deine Zahlen nicht gleichmäßig verteilt sind, d.h. mit unterschiedlich hohen Wahrscheinlichkeiten auftreten, dann kannst Du Zahlen mit hoher Wahrscheinlichkeit auf niederwertige Ganzzahlen abbilden und die frei werdenden höherwertigen (längeren) Zahlen mit weniger wahrscheinlichen Werten assoziieren.
Damit ließe sich dann auch etwas Platz sparen. Allerdings benötigst Du dafür entweder eine geschickt gebaute Funktion die sich aus der Wahrscheinlichkeitsdichte ableitet oder eine riesen Look-Up-Table.
Vielen Dank für deine Antwort! Es gibt zwar im Prinzip keine Lücken, aber das mit der Statistik könnte tatsächlich funktionieren. Das ist jedenfalls ein guter Ansatz, den ich auf jeden Fall mal testen werde.
Danke nochmal! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage