Runden Sie eine Zahl auf die nächst höhere 10
Ich muß ein Diagramm erstellen, wo die Skalierung der Y-Achse ändert sich je nach Eingabe der Daten in das system. Denkbar, diese Skala könnte überall von 0-10, 0-100 oder sogar untere Grenze von tausend und einer oberen Grenze von Millionen.
Richtig determinethe Skalierung dieser Achse, die ich brauche, um arbeiten aus dem Verhältnis der Punkte in Pixel (basierend auf graph-Höhe/- Bereich).
Jetzt einen Graphen' - Achse starten Sie niemals auf den niedrigsten Wert ein, und gehen Sie auf die höchste, übliche Praxis ist, zu gehen, um die nächsten 2, 5 oder 10 (die oben für die Obere Grenze, und weiter unten für unteren) je nach Wertebereich.
Also was ich wissen möchte ist, wie das max-Wert aus dem Datensatz, und um es bis zu den nächsten 10.
für die Klärung, die input-Werte werden immer Integer sein.
was ich jetzt haben, ist dieser
if ((rangeMax < 10) && (rangeMax > 5))
rangeMax = 10;
else if (rangeMax < 5)
rangeMax = 5;
Ist nur sinnvoll, Werte für weniger als 10, und nicht erlaubt die notwendige Flexibilität, um wirklich dynamisch. Letztlich ist dieses Diagramm wird automatisch erstellt, während ein load-Ereignis, bei dem keine Benutzereingaben.
Ich gelesen habe ein bisschen herum, und die Leute reden über Dinge wie den modulo-operator (%), aber ich finde keine zuverlässigen Informationen über den Einsatz und die Rede von Math.Decke und Mathematik.Runde, aber diese gehen auf die nächste ganze Zahl, was nicht ganz da, und scheinen nicht zu viel helfen, wenn der Umgang mit ganzen zahlen sowieso.
Anregungen, Hinweise oder Hilfe sehr dankbar.
ich habe eine ähnliche Frage hier gestellt Wie kann ich das nächsthöhere Vielfache von 5 oder 10 aber ich weiß nicht, java, also kann ich nicht verstehen, was gesagt wurde.
Cheers
- Positive zahlen oder auch negative? Wenn auch negative, sollten Sie Runden in Richtung null oder minus unendlich?
- Auch, wenn Sie das schreiben in C# dann wissen, Java ist nicht wirklich notwendig. Aber zu Runde bis eine ganze Zahl auf das nächste Vielfache von 5 die Art und Weise Sie scheinen zu sein, beschreiben Sie es mit Ihren code-snippet, das Sie möchte hinzufügen 4, Division durch 5, dann multiplizieren Sie mit 5.
- in den aktuellen Bereich, nur positive, aber wenn es funktioniert, dann ist das Konzept gewöhnt sich an anderer Stelle im system
- möglich, Duplikat der Gebaut in .Net Algorithmus zu Runde den Wert auf die nächsten 10 Intervall
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie auch
Math.Round()
mitMidpointRounding.AwayFromZero
mit einer Dezimalzahl (sonst integer-division schneidet Fraktionen):MidpointRounding
Methode scheint zu funktionieren, zumindest tut es mit meiner kleinen, tamer Reihe von test-Daten. aber ich bin mir nicht ganz klar, was deine erste Methode tut oder wie es funktioniert, mit meinem test-Daten, die es immer Schritte geradeaus über esWenn Sie möchten, gehen bis zu den nächsten 10, die Sie verwenden können, Math.Decke wie folgt:
Wenn Sie brauchen, um zu verallgemeinern, um auf die nächste
n
(zum Beispiel 5 hier), die Sie tun können:Math.Ceiling
zuMath.Floor
Etwas, was helfen könnte, ist die Division der Zahl durch 10. Diese Runde sollte es auf die nächste Ganzzahl. Dann multiplizieren Sie ihn mit 10 wieder auf die Reihe bekommen, aufgerundet auf die nächsten 10
Benutze ich DIESES:
können Sie versuchen, diese....