Runden Sie eine Zahl auf die nächste HIGHEST 10

7

Ich muss ein Diagramm erstellen, in dem sich die Skalierung der Y-Achse abhängig von den Dateneingaben im System ändert. Vorstellbar ist, dass diese Skala irgendwo zwischen 0-10, 0-100 liegen oder sogar eine untere Grenze von Tausenden und eine obere Grenze von Millionen haben kann.

Um den Maßstab dieser Achse richtig zu bestimmen, muss das Verhältnis von Punkten zu Pixeln (basierend auf der Höhe / Entfernung des Diagramms) berechnet werden. Jetzt beginnt eine Graphenachse niemals mit dem niedrigsten Wert und geht zur höchsten, übliche Praxis ist es, zu den nächsten nächsten 2, 5 oder 10 zu gehen (oben für obere Grenze und darunter für untere), abhängig von dem Wertebereich / p>

Was ich also gerne wissen würde, ist, wie man den maximalen Wert aus dem Datensatz nimmt und ihn auf die nächsten 10 aufrundet. Zur Klarstellung werden die Eingabewerte immer ganze Zahlen sein.

Was ich jetzt habe ist das

%Vor%

Dies ist nur für Werte von weniger als 10 nützlich und erlaubt nicht die erforderliche Flexibilität, um wirklich dynamisch zu sein. Letztendlich wird dieses Diagramm automatisch während eines Seitenladeereignisses ohne Benutzereingabe generiert.

Ich habe ein bisschen herumgelesen, und die Leute reden über Dinge wie den Modulo-Operator (%), aber ich kann keine zuverlässigen Informationen über ihre Verwendung finden und rede von Math.Ceiling und Math.Round, aber diesen gehe zur nächstliegenden ganzen Zahl, die nicht ganz da ist, und scheint überhaupt nicht viel zu helfen, wenn es um Ganzzahlen geht. Irgendwelche Vorschläge, Hinweise oder Hilfe sehr geschätzt.

Ich habe eine ähnliche Frage hier gefunden Wie kann ich das nächsthöchste Vielfache von 5 oder 10 bekommen , aber ich kenne kein Java, also kann ich nichts von dem verstehen, was gesagt wurde.

Prost

    
Archaon6044 30.12.2011, 13:02
quelle

5 Antworten

21
%Vor%

Sie könnten auch Math.Round() mit MidpointRounding.AwayFromZero verwenden, indem Sie eine Dezimalzahl verwenden (andernfalls wird die ganze Division Brüche kürzen):

%Vor%     
BrokenGlass 30.12.2011, 13:05
quelle
3

Wenn Sie zu den nächsten 10 gehen möchten, können Sie Math.Ceiling wie folgt verwenden:

%Vor%

Wenn Sie verallgemeinern müssen, um zum nächsten n zu gehen (zum Beispiel 5 hier), können Sie Folgendes tun:

%Vor%     
Jon Egerton 30.12.2011 13:09
quelle
2

Etwas, das helfen könnte ist, die Zahl durch 10 zu teilen. Dies sollte es auf die nächste Ganzzahl runden. Dann multipliziere es erneut mit 10, um die Zahl auf die nächsten 10 zu runden

    
Simon Verbeke 30.12.2011 13:06
quelle
1

Ich benutze dies:

%Vor%     
Jan Sršeň 10.11.2017 08:49
quelle
0

Sie können das versuchen ....

%Vor%     
Manoj Savalia 01.06.2012 08:34
quelle

Tags und Links