Ich habe 3 Werte, die alle auf keine Dezimalstellen gerundet werden (dh 5%, 25%, 70%), außer dass meine 70% wirklich 70,6% sind, also 71%, was insgesamt 5% ergibt, 25%, 71% = 101%, was nicht gut ist, besonders weil ich ein Balkendiagramm habe, das, wenn es über 100% Breite geht, wirklich durcheinander gerät.
Wie kann ich sicherstellen, dass meine 3 Werte niemals mehr als 100% betragen? gerade im im mit Math.Round (Wert, 0) gibt es irgendwelche Schalter / Optionen, die ich verwenden kann, um meine Summe meiner 3 Werte von über 100% zu halten?
Danke
Wenn die drei Werte immer 100 ergeben müssen, dann runden Sie nur zwei der Werte und berechnen Sie die dritte mit
%Vor%Hinweis: Ihr Ergebnis könnte auch zu klein sein. Wenn Sie drei Werte haben, die 33,333333 sind, ergibt das Runden und Hinzufügen von ihnen 99!
BEARBEITEN (als Antwort auf @ BlueRajaDannyPflughoef's Kommentar)
Wenn Sie viele Werte haben, kann die Summe aller Rundungsfehler groß werden. Daher wäre es keine gute Idee, es auf den letzten Wert zu verschieben. Für diese Fälle schlage ich eine kontinuierliche Rundung vor.
%Vor%Es ist nicht perfekt, jedoch sollte der Fehler niemals 1% überschreiten. Hier ist ein anderes Beispiel
%Vor%Fügen Sie keine gerundeten Werte hinzu und erwarten Sie, dass etwas Sinnvolles entsteht. Fügen Sie die nicht gerundeten Werte hinzu. Wenn das nicht das tut, was Sie wollen, müssen Sie erklären, was Sie denken, indem Sie abgerundete Werte hinzufügen.
Wenn es Ihnen nichts ausmacht, dass die Werte zu kleiner als 100 summieren, besteht die einfache Lösung darin, Math.Floor
durchgängig zu verwenden.
Es wird interessanter, wenn du auf / abrunden willst und das Ergebnis genau 100 ist. Hier ist eine Herangehensweise - runde sie alle ab, dann runde sie selektiv den größten Bruch zuerst, bis du wieder 100 erreichst:
%Vor%Dieses Problem trat bei mir auf, als ich Daten in ein System importieren musste, das ganzzahlige Prozentsätze für die Menge der zu jedem Benutzer gehörenden Zeilen benötigte, um genau hundert hinzuzufügen.
Es ist wichtig zu erkennen, dass es keinen "richtigen" Weg gibt, dies zu tun. Geben Sie beispielsweise drei Werte an, die jeweils 1/3 entsprechen und eine gerundete Summe von 99 haben, wobei der Wert 1 addiert werden sollte, um die Summe auf 100 zu setzen. Es gibt keine richtige Antwort. Wählen Sie einfach einen.
Hier ist meine Lösung in PHP:
%Vor%