Ich habe zum Beispiel Integer 363.Kann Math.Round in C# für Ganzzahlwerte verwendet werden?
Jede Methode, um es 360 oder 365 zu machen?
Ich habe zum Beispiel Integer 363.Kann Math.Round in C# für Ganzzahlwerte verwendet werden?
Jede Methode, um es 360 oder 365 zu machen?
Es gibt nichts eingebaut, du wirst nur sich selbst die Logik zu codieren haben. Hier ist eine solche Methode. (Going down ist klarer, aber steigen ist überschaubar.)
int number = 363;
int roundedDown = number - number % 5;
int roundedUp = number + (number % 5 > 0 ? (5 - number % 5) : 0);
bearbeiten für negative Zahlen, die Logik fast umgekehrt wird.
static int RoundUpToFive(int number)
{
if (number >= 0)
return number + (number % 5 > 0 ? (5 - number % 5) : 0);
else
return number - (number % 5);
}
static int RoundDownToFive(int number)
{
if (number >= 0)
return number - number % 5;
else
return number + (number % 5 < 0 ? (-5 - number % 5) : 0);
}
@ Ani, hat nicht nach Negativen gesucht. Wird das Wasser etwas trüben. –
+1 Schön, weicht in Floating-Point Land vollständig. – Ani
Dies ist ein Hack, aber es funktioniert:
var rounded = Math.Round(363/5f) * 5;
Ich bin sry. Aber ich weiß einfach, dass es 5f ist? – william
Es gibt 5 als Float-Wert an. Es hat dieselbe Bedeutung wie '(float) 5'. Sie müssen die Division mit einem Gleitkommawert durchführen oder das Ergebnis wird als Integer abgeschnitten und anschließend immer abgerundet. – cdhowie
Beachten Sie, dass dies zu einem "double" ausgewertet wird, wenn das OP (wahrscheinlich) nach einem "int" gesucht hat. –
Hier ist, was ich in der Regel tun, das eine Kombination der beiden Ideen ist: (. Das setzt voraus, positive Zahlen, es zu Negativer Erweiterung ist straight-forward)
static int RoundDown(int x, int n) {
return x/n * n;
}
static int Round(int x, int n) {
return (x + n/2)/n * n;
}
static int RoundUp(int x, int n) {
return (x + n - 1)/n * n;
}
[ bearbeiten]
nach LLVM, die Round-Funktion auch wie folgt geschrieben werden kann:
int Round(int x, int n) {
int z = (x + n/2);
return z - (z % n);
}
Was Sie eleganter finden können.
wollen Sie es 360 oder 365? (aufgerundet oder nach unten) –
ist in beide Richtungen in Ordnung. – william
your_num% 5 == 0? your_num: your_num + (your_num% 5) – Pratik