Arbeiten an einem Problem, das die Prozentänderungsformel verwendet:
percent change = 100 * [(new value - old value) / old value]
Wie würde ich den Unterschied erklären new value or old value = NULL
, anstatt 0
jemandem, der vielleicht kein Programmierer ist?
Mein Chef fragt sich, warum es in der TextBox eine leere Zeichenfolge gibt und keinen Wert, weil wir den alten Wert haben, aber nicht den neuen Wert.
NULL
es sich um einen Zustand handelt , nicht um einen Wert - es bedeutet, dass Sie den Wert nicht kennen. Für SQL verwende ich normalerweise die Partei-Analogie, um zu demonstrieren.Antworten:
Um einem Chef den Unterschied zwischen "Null" und "Null" zu erklären:
"Null" ist ein Wert. Es ist die eindeutige, bekannte Größe von Null, die in der Arithmetik und anderen Mathematik bedeutsam ist.
"Null" ist kein Wert. Es ist ein "Platzhalter" für einen Datenwert, der nicht bekannt oder nicht angegeben ist. Es ist nur in diesem Zusammenhang sinnvoll; mathematische Operationen können nicht mit null ausgeführt werden (das Ergebnis einer solchen Operation ist undefiniert und wird daher im Allgemeinen auch als null dargestellt).
Zum Beispiel wie in den Kommentaren: "Was ist Ihr Jahreseinkommen?" ist eine Frage, die eine numerische Antwort erfordert. "0" ist eine vollkommen gültige Antwort für jemanden, der nicht arbeitet und kein Kapitalanlageeinkommen hat. Wenn der Benutzer überhaupt keinen Wert eingibt, verdient er nicht unbedingt kein Geld. Sie wollten Ihrer Software nur nicht mitteilen, wie viel (oder wie wenig) sie verdienen. Es ist eine unbekannte, nicht spezifizierte; Damit die Software fortgesetzt werden kann, geben Sie den Platzhalter "null" für dieses Datenfeld in der Software an. Das ist aus Datenperspektive technisch gültig. Ob sie auf Unternehmensebene gültig ist, hängt davon ab, ob ein tatsächlicher numerischer Wert (sogar Null) erforderlich ist, um eine mathematische Operation durchzuführen (z. B. Berechnung von Steuern oder Vergleich mit Schwellenwerten, die die Leistungen bestimmen).
Auf Computern führt praktisch jede Operation mit einer Variablen, die null enthält, entweder zu null oder zu einer Fehlerbedingung, da einer der Werte der Variablen nicht bekannt ist und das Ergebnis des Ausdrucks nicht bekannt ist. Das Äquivalent zu Null wäre, wenn ich Sie fragen würde: "Was ist fünf plus der Zahl, an die ich gerade denke?". Es ist unmöglich für Sie, eine eindeutige Antwort zu geben, weil Sie die Nummer, an die ich denke, nicht kennen. Eine Operation auf Null ist normalerweise gültig und gibt einen anderen bekannten, eindeutigen Wert zurück.
quelle
NULL
.NULL
die explict ist LACK von Daten ist es nicht ein Platzhalter, es ist eine einzige Einzel Darstellung ist keine Daten.Boss-Speak ist immer hart ...
Null ist eine Zahl, mit der Sie etwas anfangen können.
Null ist ein Einhorn. Es gibt es nicht, also kann man damit überhaupt nichts anfangen.
quelle
NVL(somefield,'UNICORN')
Formulieren Sie die Gleichungen einfach in Sätze um:
und
Natürlich lautet die Antwort auf beide Fragen: "Es kann nicht berechnet werden, da eines der kritischen Elemente der Berechnung fehlt." Das ist die Essenz von 'null'.
Es sollte dann einfach sein, die äquivalenten Sätze mit Null herauszufinden und zu sehen, wie sie sich grundlegend unterscheiden:
und
Obwohl die Antworten (mit Nullen) möglicherweise nicht sehr sinnvoll sind, kann sie zumindest berechnet werden . Mit null ist die Berechnung gar nicht möglich .
quelle
unknown
einfach nicht vorhanden, da im Fall einesNULL
Prozentsatzes tatsächlich KEIN numerischer Wert (Prozentsatz) oder ein anderer prozentualer Wert vorliegt .Wenn Sie mit Ihrem Chef sprechen, verwenden Sie nur
0
für Null und?
für Null. Es erfasst korrekterweise, dass es ein Platzhalter für etwas ist, aber dass Sie nicht wissen, was es ist.quelle
Wie wäre es damit:
0
lautet die Antwort auf "Wie viel Flüssigkeit befindet sich in einer leeren Flasche?".NULL
lautet die Antwort auf "Was ist der Inhalt einer leeren Flasche?".Oder wenn Sie sich einen kinderlosen Mann vorstellen:
0
NULL
Der grundlegende Unterschied besteht darin, dass
0
es um messbare Größen geht, währendNULL
es um Existenz geht. Quantität zu sein,0
repräsentiert etwas , dh eine Quantität, die einer Quantität0
sehr ähnlich0.000000001
ist (einer, der in alltäglichen Problemen tatsächlich ununterscheidbar nahe steht0
). Im Gegensatz dazuNULL
steht nichts . In der Tat gibt es nichts in der NäheNULL
. Der Wert einer Variablen (und Ausdrücke) ist entwederNULL
oder etwas.quelle
So erkläre ich es immer erfolgreich:
0 ist die Zahl 0.
NULL ist Nirwana, nichts, nada, niente, Nichtexistenz, Abwesenheit.
Auf NULL definierte arithemetische Operationen ergeben daher immer NULL.
... hat bisher für mich gearbeitet.
quelle
Warum würden Sie nicht mit der Frage beginnen, warum der Wert gleich NULL ist? Dies kann Ihnen helfen, zu erklären, warum eine Berechnung möglicherweise ungültig ist.
Wenn Sie regelmäßige Aktualisierungen durchgeführt haben und der neue Wert nicht angezeigt wurde (z. B. Netzwerkfehler), kann NULL bedeuten, dass die Berechnung nicht durchgeführt werden kann und der alte Prozentwert veraltet ist. Möglicherweise möchten Sie ein Symbol anzeigen, das darauf hinweist, dass veraltete Daten vorhanden sind. Die Aktualisierung wurde nicht wie erwartet durchgeführt.
Dasselbe mag für einen fehlenden alten Wert zutreffen, aber ich kann nur schwer nachvollziehen, wie ein alter Wert verloren gehen kann (es sei denn, dies ist die erste Berechnung, oder die Batterie ist leer und die Daten gingen verloren.) Aber Sie möchten vielleicht Zeigen Sie ein Symbol an, das auf diesen Zustand hinweist.
In jedem Fall möchten Sie nicht, dass dies passiert:
Bildquelle
quelle
OldValue=Null
Sie kennen den alten Wert nicht, daher ist der Unterschied unbekannt (Null).OldValue=0
Sie kennen den alten Wert, er ist 0, also ist der Unterschied Unendlich (Null)Wenn es wichtig ist, zwischen diesen beiden zu unterscheiden, speichern Sie einfach den alten Wert als
PreviousValue
und zeigen ihn irgendwo an.Bearbeiten Sie anhand des Kommentars unten:
Ich würde ihn nur fragen, was er in den folgenden Situationen tun möchte, und ihm Beispiele für jede dieser Situationen zeigen. Dann fragen Sie ihn: "Welchen Wert möchten Sie für diese anzeigen?"
Machen Sie dies in keiner Weise zu einem Computerproblem. Es ist eine geschäftliche Frage.
quelle
Ich hatte viel Erfolg mit 'blank'.
Bei Leuten, die die grundlegende Algebra verstehen (oder die einfache Idee, dass Sie einem Symbol einen Wert zuweisen können), scheint die Idee eines "leeren" Werts ziemlich einfach zu sein und sich von einem Nullwert zu unterscheiden.
quelle
NULL ist kein Wert, es fehlt einer. Null ist immer noch ein Wert. (Auch wenn es in Fällen verwendet werden kann, in denen es nicht vollständig evaluiert werden kann.
In Analogie (eine gute Möglichkeit, Nicht-Teckies zu erklären;
In diesem Fall haben beide möglicherweise den gleichen Wert (abhängig von Ihrer Sprache), sind jedoch konzeptionell sehr unterschiedlich
quelle
Wirklich ist es nicht relevant, ob Ihr Chef ein Programmierer ist. Das Problem ist konzeptionell und nicht technisch.
Bitten Sie ihn anzunehmen, dass Sie eine Gehaltserhöhung erhalten haben. Ihr altes Gehalt war 175.000, aber Ihr neues Gehalt ist unbekannt. Dann fragen Sie ihn - wie viel Prozent der Gehaltserhöhung haben Sie erhalten?
Wenn er arithmetisch deaktiviert ist, führen Sie ihn durch den Prozess, bis er den fehlenden Link erkennt.
quelle
Ich benutze den Münzwurf. Richtig sind Köpfe, falsch sind Schwänze, und eine Hand, die über der anderen liegt und die Münze verbirgt, ist NULL. Wenn Sie wissen, dass es sich bei der Münze um Köpfe handelt, können Sie die Frage "Was ist das Gegenteil von diesem Wert?" Ganz einfach beantworten. Eine Hand, die die Münze versteckt, zeigt sehr leicht, dass die Person antworten könnte , wenn Sie sie den aktuellen Wert sehen lassen würden, aber da Sie dies nicht tun, können sie Ihnen keine Antwort geben. Nach allem, was sie wissen, haben Sie nicht einmal eine Münze unter der Hand!
quelle
In einem Feld sagt NULL, dass ich keine Ahnung habe; Hier gibt es keine Daten - es ist gleichbedeutend mit Leerzeichen. Null (0) besagt, dass ich weiß, dass der Wert dieses Felds genau 0 ist, z. B. die ganze Zahl, die um eins niedriger als die Zahl eins ist.
Zum Beispiel könnte ich ein Blatt Papier haben, das ich in das Computersystem eintippe und auf dem steht, wie viel jeder Kunde schuldet. Kunde A schuldet $ 50, Kunde B $ 0 und Kunde C NULL (????), weil der Betrag, den Kunde C schuldet, reduziert wurde (jemand hat eine schwarze Linie darüber gezogen und es ist nicht lesbar; ihre Rechnung für ist noch nicht fertig). Ich kann bequem sagen, dass Kunde B 0 USD schuldet, und ich kann bequem sagen, dass ich nicht weiß, was Kunde C schuldet. Ich möchte dem Kunden keine C $ 0 in Rechnung stellen (weil er möglicherweise Geld schuldet).
quelle
Angenommen, wir beschäftigen uns nicht mit sprachspezifischen Themen wie:
Der Unterschied besteht darin, dass 0 ein numerischer Wert ist, bei dem NULL nicht ist. Es ist wie eine leere Zelle auf einem Millimeterpapier. Eine Zelle kann eine "0" enthalten, sie kann jedoch auch leer sein. Null ist immer noch ein Wert, aber Sie haben es als besonders erachtet. Wenn Ihre Zellen jetzt beispielsweise Zeichen waren, können Sie die leere Zelle als Leerzeichen verwenden, und eine Nullzelle ist nur dann möglich, wenn Sie ein Zeichen als Sonderfall festlegen oder erstellen.
Was null bedeutet, hängt davon ab, wie die Daten interpretiert werden:
quelle
NULL == 0
Funktioniert gut, wenn Sie mit Nullzeigern in C et al. Wenn Sie versuchen, Ihrem Nicht-Programmierer-Chef die Idee zu erklären, indem Sie ihm Code zeigen, machen Sie es falsch.Ich würde die NVL-Prüfung ausführen und wenn einer der Parameter NULL ist, würde ich die Zeichenfolge "N / A" anzeigen (keine "0" zurückgeben, da dies einfach nicht wahr ist!).
Dies ist etwas, das aus der Sicht eines Managers professioneller aussieht, als einen NULL-Wert anzuzeigen, wie Sie aussehen, als hätten Sie einen Fehler (was Sie natürlich nicht tun - aber für einen Nicht-Ingenieur sieht es so aus). .
quelle
Es scheint, als wäre es unbekannt, wenn er keinen neuen Wert hat. es ist das gleiche wie der alte Wert. Sie können das dementsprechend codieren, ohne null zu erklären, da es in seinem Kopf niemals null ist.
Anstatt über NULLs zu streiten, stellen Sie einfach sicher, dass dies keine weiteren Probleme verursacht. Welche Konsequenzen hat es, wenn Daten zu alt sind? Wenn jemand eine Veränderung von 0% feststellt, drückt er dann die Paniktaste? Verzerrt dies im Laufe der Zeit Analysen oder Aggregate?
Ich glaube einfach nicht, dass er ein Tutorial für Computerprogrammierung braucht, aber es wäre schön, wenn er wüsste, was eine Null ist und stattdessen die richtige Frage stellt.
quelle
Wenn das
old value
null ist, sollte das Ergebnis der Gleichungen zu Recht null sein. Dies liegt daran, dass null keine Zahl ist, sondern einen unbekannten Wert bedeutet. Daher kann die Berechnung nicht fortgesetzt werden.Natürlich scheitert Ihre Gleichung auch, wenn
old value = 0
Sie nicht durch Null teilen können.In der Regel behandeln Sie diese Dinge mit einer case-Anweisung, die Ihnen den Pfad zu dem vorgibt, was Sie anzeigen möchten. Wenn Sie also möchten, dass das Ergebnis als Null angezeigt wird, wenn Sie nicht rechnen können (wie bei einer Null oder einer Null), dann würden Sie eine case-Anweisung in etwa ausführen
quelle
Einige gute Diskussionen über Analogien zur Erklärung der mechanischen Aspekte eines Null-Symbols im Vergleich zu anderen Werten; Der Kern dieser Frage, möglicherweise aus der Sicht des Managers, wenn es darum geht, die Ergebnisse in der Benutzeroberfläche angemessen auszudrücken, die die sinnvollen Grenzen der aktuell geänderten Formel darstellen, die auf ihr spezifisches Problem angewendet wird, kann meines Erachtens genauer beantwortet werden.
Im Fall der prozentualen Änderung der Forumula müssen zwei Dinge dargestellt werden: Wenn etwas zuerst gemessen wird und wenn für einen bestimmten Aspekt nichts gemessen wird.
Wenn etwas zum ersten Mal gemessen wird (oldValue === NULL), ist die prozentuale Änderung nicht anwendbar. und es könnte / sollte ausdrücklich darauf hingewiesen werden, dass dies die anfängliche Messung für diesen Messzyklus ist.
Wenn nichts gemessen wird (newValue === NULL), ist die tatsächlich resultierende prozentuale Änderung tatsächlich der Wert Null (wobei im vorherigen Zyklus davon ausgegangen wird, dass sie nicht Null ist). In diesem Fall ist in der Regel Null die richtige Antwort auf die Formel. In diesem letzten Zyklus gab es keine Messung und somit keine gemessene Änderung. Das sollte nicht bedeuten, dass es sich nicht geändert hat, nur, dass in Bezug auf diesen Aspekt nichts gemessen, aufgezeichnet oder kommuniziert wurde.
quelle
Sicher verstehen sie das Konzept, "N / A" auf ein Formular zu setzen, wenn sie "nicht verfügbar" bedeuten. Zum Beispiel, um die Frage zu beantworten: "Wie alt ist Benjamin Franklin?" Die Antworten 0 und N / A sind offensichtlich unterschiedlich (und letztere ist korrekt). Ebenso sind die Antworten 0 und NULL unterschiedlich.
quelle
Wenn ich diese Konzepte jemandem erklären müsste, würde ich zwei Kästchen zeichnen.
quelle
Der Unterschied zwischen 0 und null ist wie der Unterschied zwischen einem Bankkonto mit einem Kontostand von 0 und überhaupt keinem Bankkonto.
quelle
Dies lässt sich am besten mit Zeigern erklären.
Aus diesem Grund verwenden Sie alles, was bereits vorhanden war , wenn Ihre Sprache keine NULL-Variablen für Sie erfasst . Dies kann zu Überläufen, Stapelverfälschungen oder anderen unangenehmen Nebenwirkungen führen.
Wenn die Sprache tut Spur von NULL Variablen halten, dann wird es einen Fall angegeben haben diese für die Handhabung. IE NULL als Null behandeln, Ausnahme auslösen, als NOP behandeln, etc.
Besorgen Sie sich zur Demonstration für Ihren Chef ein paar gebrauchte Papiere.
quelle
Aus der Vielzahl der Antworten auf diese Frage lässt sich schließen, was wir bereits wissen: null kann viele Dinge bedeuten.
Entweder bedeutet es, dass die Daten:
Aus diesem und vielen anderen Gründen ist es oft nützlich, eine Datenstruktur zu definieren, die die Bedeutung des Nullwerts einkapselt (z. B. eine optionale Klasse).
quelle
Die Person, die dies getan hat, hat keinen Sinn für Humor. FWIW Ich bin selbst Architekt.
Null ist Leere. Der Legende nach gibt es 17 Geschmacksrichtungen (mögliche Bedeutungen) von Null, einschließlich "Ich weiß nicht", "Sie haben nicht gesagt" und "Jemand hat das gebrochen". Niemand weiß warum, außer DBAs und Architekten, die nur Programmierer aus dunklen Hinterzimmern anstarren. Sie lächeln Chefs höflich an und wedeln mit ihren Zungen in tiefer Besorgnis mit unglaublich komplexer Weisheit, die so sein muss, und sie sind zutiefst wichtig, aber nicht sehr klar - weil Chefs dem DBA und dem Architekten wichtige Leistungen erbringen. Ein Gehaltsscheck. Trotzdem verraten Nullen niemals ihre Geheimnisse. Sie sind schwarze, leere Löcher. Eine Null ist niemals gleich einer anderen Null, weil jede Leere leer ist und nicht zugeben will, dass sie möglicherweise nicht so leer ist, wie sie ist. Dies ist natürlich eine Vermutung, denn keine Null, die sich selbst respektiert, könnte es jemals wirklich zugeben. Manchmal saugen Nullen riesige Mengen an realen Daten in ihr (). Dies wird als Fehler bezeichnet, ist jedoch nur die Leere des Programmierers, der die Nullen vergisst. Sie sehen also, dass sie manchmal brüten. Aber wie oder warum wird immer schnell vergessen. () ist manchmal ein Zeichen einer Null oder seines Vetters Null, aber paradoxerweise selten ein Fehler.
Null ist eine bestimmte Menge von etwas. Nullen sind viel glücklicher als Nullen. Nullen sind nur faul und tragen nicht viel zum Ergebnis bei.
Für die langweilige, sehr alte genaue Antwort Null ist eine Darstellung von "fehlenden Informationen und nicht zutreffenden Informationen" EF Codd, Schöpfer von SQL.
Codd erfand auch die 3. Normalform, die als eine Form der vorläufigen Folter auf die Köpfe junger Informatiker angewendet wird. Einmal gemeistert, wird es völlig ignoriert. Ähnliche Dinge passieren, wenn objektorientiertes Design eingeführt wird. Und wir sind nie glücklich, es in Ruhe zu lassen, daher kommt eine Impedanz-Fehlanpassung hinzu, die zum tollen Kampf beiträgt.
quelle