Ich muss ein Doppel auf die nächsten fünf runden. Ich kann mit der Math.Round-Funktion keinen Weg finden, dies zu tun. Wie kann ich das machen?
Was ich will:
70 = 70
73.5 = 75
72 = 70
75.9 = 75
69 = 70
und so weiter..
Gibt es eine einfache Möglichkeit, dies zu tun?
Das funktioniert:
5* (int)Math.Round(p / 5.0)
quelle
Hier ist ein einfaches Programm, mit dem Sie den Code überprüfen können. Beachten Sie den Parameter MidpointRounding. Ohne diesen Parameter wird auf die nächste gerade Zahl gerundet, was in Ihrem Fall eine Differenz von fünf bedeutet (im Beispiel 72.5).
class Program { public static void RoundToFive() { Console.WriteLine(R(71)); Console.WriteLine(R(72.5)); //70 or 75? depends on midpoint rounding Console.WriteLine(R(73.5)); Console.WriteLine(R(75)); } public static double R(double x) { return Math.Round(x/5, MidpointRounding.AwayFromZero)*5; } static void Main(string[] args) { RoundToFive(); } }
quelle
Ich habe das so gemacht:
int test = 5 * (value / 5);
Für den nächsten Wert (Schritt 5) oben fügen Sie einfach 5 hinzu.
quelle
Sie können auch eine generische Funktion schreiben:
Option 1 - Methode
public int Round(double i, int v) { return (int)(Math.Round(i / v) * v); }
Und benutze es wie:
var value = Round(72, 5);
Option 2 - Erweiterungsmethode public static double Round (dieser doppelte Wert, int roundTo)
{ return (int)(Math.Round(value / roundTo) * roundTo); }
Und benutze es wie:
var price = 72.0; var newPrice = price.Round(5);
quelle