Vor diesem Posting habe ich mir diese beiden Antworten:Rundung auf die nächste Zahl in einer bestimmten Anordnung von Zahlen
C# Finding Nearest Number in Array
Round integer to nearest high number in array
Während die erste im Hinblick auf die Erweiterung ein wenig hilfreich war In einer der Antworten genannten Methode konnte ich sie nicht in der Tiefe verstehen, die es mir erlauben würde, sie zu modifizieren und zu implementieren, um sie meinen spezifischen Umständen anzupassen, und die zweite war nicht geeignet für meine Bedürfnisse aufgrund ihrer Anordnung von a kurze Länge und wenn ich ein Array verwenden sollte, um alle Basis 2-Nummern zu speichern Bis zu 268 Millionen würde es eine relativ große Anzahl von Einträgen haben.
Grundsätzlich, was ich hier versuche, ist RoundedSpeed (die auf eine Ganzzahl mit Math.Round
aufgerundet wurde) und runde es auf die nächste Zahl (es darf nie abrunden, nur nach oben), die das Ergebnis von ist 2. Beispielnummern umfassen 16384, 32768, 65536, 131072, etc.
Für dieses spezielle Beispiel ist die Nummer, auf die ich runden möchte, 32768. (Obwohl andere Methoden möglicherweise eine andere Nummer wünschen , aber das ist ein Thema, mit dem ich mich befassen muss und das nicht in den Anwendungsbereich dieses Beispiels fällt).
Hier ist der Code, den ich jetzt habe:
double Speed = Math.Pow(2, ((-900 + Time)/-60)) - 1;
double RoundedSpeed = Math.Round(Speed);
Ursprünglich suchte ich eine Reihe an mit den entsprechenden Nummern speichern abzurunden, aber gibt es eine andere Möglichkeit, ich RoundedSpeed
zum nächsten bis abrunden könnte Basis 2 Ganzzahl?
Für jeden, der LINQ vorschlagen würde, habe ich LINQ noch nicht gelernt, also bitte vermeiden Sie LINQ in der Antwort, es sei denn, absolut notwendig. Einige einfache Loops sind vielleicht nicht die eleganteste Lösung, aber ehrlich gesagt mache ich mir keine Sorgen um Code-Eleganz, ich möchte nur etwas, auf das ich später zurückkommen und verstehen kann, was es macht. – LC14199
Sie möchten eine Zahl auf die nächste Potenz von 2 runden - richtig? – pm100