Berechnen Sie die prozentuale Differenz zwischen zwei Werten
Bevor Sie anfangen zu lachen bei so einer einfachen Frage lassen Sie mich erklären:
Ich bin versucht zu ermitteln, wie viel Veränderung in Prozent ( % ) es wird in einer Rechnung über verschiedene Indikatoren. Dies ist nicht besonders schwer. Aber wie wollen Sie in der Regel behandeln die Fälle, in denen der aktuelle Wert ist null oder der Vorherige Wert gleich null ist?
d.h.
Diese Woche: Ergebnis = $25.6
Letzte Woche: Ergebnis = $0.0
Ich derzeit berechnen die Differenz in % durch die folgende Formel:
If (CurrentValue > 0.0 && PreviousValue > 0.0) {
return (CurrentValue - PreviousValue) / PreviousValue;
} return 0.0;
wenn das Ergebnis waren null in der Vorwoche - was soll % Differenz sein? +Infinity?
Und Umgekehrt, wenn die aktuelle Woche gleich null ist? -Infinity -?
Dann, um die Dinge zu komplizieren, wie würden Sie behandeln diese in einer Linq-To-SQL-Abfrage
Upside_Earnings = (statistics.Where(d => d.DateTime > first_startdate && d.DateTime <= first_enddate).Average(e => (double)e.Earnings) > zero &&
statistics.Where(d => d.DateTime > second_startdate && d.DateTime <= second_enddate).Average(e => (double)e.Earnings) > zero) ?
((statistics.Where(d => d.DateTime > first_startdate && d.DateTime <= first_enddate).Average(e => (double)e.Earnings) -
statistics.Where(d => d.DateTime > second_startdate && d.DateTime <= second_enddate).Average(e => (double)e.Earnings)) /
statistics.Where(d => d.DateTime > second_startdate && d.DateTime <= second_enddate).Average(e => (double)e.Earnings)) : zero,
InformationsquelleAutor Andrew Harry | 2009-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was zu tun ist in dieser situation ist subjektiv, und wahrscheinlich hängt von Ihren Geschäftsanforderungen.
Ich würde lieber Nicht zur Verfügung, wenn es keine andere Wahl.
100% sinnvoll ist.
Vielleicht mit 1 anstelle von null kann auch Sinn machen, was in 2560% in deinem Beispiel.
InformationsquelleAutor ScottS
Die änderung kann positiv oder negativ sein. Also die Formel ist:
Beispiel:
[ ((V2 - V1) /|V1|) * 100 ]
= ((220 - 110) /|110|) * 100
= (110 /110) * 100
= 1 * 100
= 100% ändern
= 100% erhöhen
[ ((V2 - V1) /|V1|) * 100 ]
= ((75 - 150) /|150|) * 100
= (-75 /150) * 100
= -0.5 * 100
= -50% ändern
= 50% verringern
HINWEIS: dies funktioniert nicht mit Nullen. Sie konnte tun, dass sich
InformationsquelleAutor Dmitry Pavlov
Du willkürlich festlegen, Veränderung in % zu X, wo X für den angemessenen Standard für den problem-Raum. Aber es ist nicht wirklich eine Frage der Programmierung. Es ist die Frage, was Sie erwarten. Was soll passieren, eine Zahl null nähert, ist eine Funktion des Problems Raum. Zum Beispiel arbeitete ich einmal auf ein Rechnungswesen "Funktion". Die Funktion war nichts besonderes, es ist einfach übersetzt ein scoring-Methode, um code. Das problem war in der scoring-Methode, und dass niemand jemals definiert, was die Standard-Werte wurden als einige Nenner zu finden, ging gegen null. Für jede gegebene Buchhaltungs-score, was passiert bei null sein könnte, volle Punktzahl, teilweise Punkte, oder 0 Punkte (auf der Notenskala), je nach den details von dem, was wurde gemessen.
Bestimmen Sie, was Sie Messen und ersetzen Sie es mit einem angemessenen Standard für die null. Wenn Sie Messen Leistung, stellen Sie sicher, jemand kann nicht Spiel das system, indem Sie absichtlich mit $0 Wochen, gefolgt von hohen US-dollar-Wochen (zum Beispiel).
InformationsquelleAutor Russell Steen
Ich erinnere mich an meine Dozenten nennen es 'undefined' im Gegensatz zu infinity.
Vom wikipedia:
Ja, ich bin ziemlich sicher, dass es undefined, x/0 ist nicht unendlich.
Für Sortier-Zwecke, denke ich, negative & positiv unendlich ist intuitiver
InformationsquelleAutor Ken Browning
Ich würde speichern, entweder NaN oder infinity oder was auch immer Wert Sinn macht, aber wenn dem user angezeigt, ich würde den Prozent leer oder irgendwie zeigen, dass ein Prozent nicht sinnvoll ist, dann.
InformationsquelleAutor Mike Cooper
Zwar technisch, die Antwort ist entweder undefiniert (in der $0/$0-Fall) oder unendlich/-unendlich (in allen anderen Fällen) der Mensch ist nicht, wie entweder Antwort. Ich würde die Anzeige so etwas wie eine oder wie, wenn ich konnte nicht herausfinden aus die Benutzer, was wäre das beste, was hier zu tun.
InformationsquelleAutor Loren Pechtel