Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Passender Variablen-Typ gesucht

  Alt 29. Dez 2004, 11:27
Bei diesem Ansatz, also dem "gedanklichen Verschieben" von Zahlenbereichen, musst Du allerdings bei arithmetischen Operationen Vorsicht walten lassen: Stellest Du Dir, wie von Christian beschrieben, eine Zahl n so vor, dass die letzten 3 Stellen (dezimal) als Nachkommastellen der darzustellenden Zahl [i9x[/i] interpretiert werden, gilt demnach Formal:
Code:
 n = x * 1000
oder, mit einem beliebigen "Faktor der Verschschiebung" f
Code:
 n = x * f
Bei der Addition/Subtraktion zweier Zahlen x1 und x2 mit
Code:
 x1 + x2 = x
 x1 - x2 = x
gilt
Code:
 x1*f + x2*f = f * (x1+x2) = f * x = n
 x1*f - x2*f = f * (x1-x2) = f * x = n
so dass Du bei der diesen Operationen keine besonderen Maßnahmen ergreiben musst.
Anders sieht dies aus, wenn Du zB multiplizierst oder dividierst:
Code:
 x1 * x2 = x
 x1 / x2 = x
wird zu
Code:
 (x1*f) * (x2*f) = f² * (x1*x2) = f*n
 (x1*f) / (x2*f) = x1/x2         = n/f
so dass das Ergebnis anschließend (oder für eine höhere Genauigkeit ggf auch vorher) korrigiert werden muss!

Ist denn der Speicherbedarf tatsächlich das Problem, wenn Du mit 100.000 Double-Werten im R² arbeitest, sollten das ein Datenaufkommen von
Code:
 100.000*SizeOf(Double)*2 < 2MB
verursachen. Durch eine Abbildung mit dem Typ Integer gewinnst Du dabei lediglich Speicher um den Faktor 2. Interessant könnten Datenstrukturen wir QuadTrees oder Bäume i.A. sein, die je nach anschließender Verarbeitung nicht nur einen Vorteil in Sachen Performance mit sich bringen sollten sondern darüber hinaus auch Cluster abbilden könnten, deren Punktemenge ihrerseits in einem relativen Koordinatenbereich mit einem kleineren Intervall (zB [-2^15..2^15[ oder [-2^7..2^7[) liegen. Dann könntest Du zu Punkten jeweils diese relative Differenz ablegen und je nach Verteilung Deiner Punkte den Speicherbedarf dramatisch reduzieren...

Ich hoffe, Dir mit diesen unvollständigen Gedanken ein paar Möglichkeiten aufzeigen zu können
gruß, choose
  Mit Zitat antworten Zitat