"Konvertieren von float zu double in C#
Habe ich die Eigenschaft für das Leben eines Teilchens (ich bin die Simulation von Partikel-Systemen), die einen float-Wert, weil ich es auch für Transparenz (alpha, float). Ich habe gelesen, Fragen über die Konvertierung von float zu double und erkannte, dass es durchaus ein problem, so werde ich wohl nicht konvertieren von float zu double. Problem ist, dass ich möchte versuchen zu berechnen, Pfad des Teilchens aus dem Leben Variablen wie:
particle.x += particle.xi;
particle.xi = Math.Sin(life);
Hinweis: Lebens-Wert ist am Anfang 1.0 f und abnehmend auf 0 (wenn es <0.0 f I initialisieren Sie die Partikel und setzen Sie das Leben 1.0 f).
Aber die Sünde, will der das doppelte Wert ... und wir sind wieder am Anfang.
So eine Lösung kann sein, die änderung der Art von Leben Schaden zu verdoppeln, und wenn ich es für Transparenz, ich will nur das double zu konvertieren float-das sollte nicht sein großes problem (denke ich).
Aber meine Frage ist, ob es einen anderen Weg, es zu tun, verursachen doppelte Kosten auch mehr Speicher (ich weiß nicht, was mehr bedeutet in diesem Fall - denke ich mal-mal mehr, können sagen, ich werde die 500 Teilchen, und jeder wird haben diese Eigenschaft). Ich muss nur irgendwie berechnen Sünde Wert von dieser Eigenschaft float.
Also ist es möglich? Sind meine Bedenken über Speicher wichtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte dies funktionieren:
Es nicht "mehr Arbeitsspeicher", es ist einfach, konvertiert den Wert in einen double vorübergehend, während es neu berechnen, dann konvertiert es zurück in ein float, wenn es geht um den Wert zu speichern.
Gehen in ein bisschen mehr detail: die Mathematik.Sünde erfordert eine doppelte, aber der float umgewandelt werden können, um diese höhere Präzision ohne Verlust, so ist es einfach "magisch arbeiten" (ein implizite cast von float zu double). Allerdings konvertieren die daraus resultierenden Doppel wieder an einem Schwimmer, werden Sie die Verringerung der Genauigkeit von der Anzahl und damit der compiler (die nicht wissen, ob dies akzeptabel sein wird für Sie) es nicht tun, es sei denn, Sie erzwingen, dass es (mit
(float)
was ist ein explizite cast von double zu float) sein wird.