Praca nad problemem wykorzystującym formułę zmiany procentowej:
percent change = 100 * [(new value - old value) / old value]
Jak wyjaśniłbym tę różnicę new value or old value = NULL
, zamiast 0
komuś, kto może nie być programistą?
Mój szef zastanawia się, dlaczego w TextBoxie jest pusty ciąg zamiast wartości, ponieważ mamy starą wartość, ale nie nową.
NULL
to stan , a nie wartość - oznacza to, że nie znasz wartości. W przypadku SQL zwykle używam analogii partii do zademonstrowania.Odpowiedzi:
Aby wyjaśnić szefowi różnicę między „zero” a „null”:
„Zero” jest wartością. Jest to unikalna, znana ilość zera, która ma znaczenie w arytmetyce i innej matematyce.
„Null” nie jest wartością. Jest to „symbol zastępczy” dla wartości danych, która nie jest znana lub nie została określona. Ma to znaczenie tylko w tym kontekście; operacje matematyczne nie mogą być wykonywane na wartości null (wynik jakiejkolwiek takiej operacji jest niezdefiniowany, a zatem ogólnie reprezentowany jako null).
Na przykład, jak w komentarzach: „Jaki jest twój roczny dochód?” to pytanie wymagające odpowiedzi numerycznej. „0” jest całkowicie poprawną odpowiedzią dla kogoś, kto nie pracuje i nie ma dochodów z inwestycji. Jeśli użytkownik w ogóle nie poda wartości, niekoniecznie nie zarabia; po prostu nie chcieli powiedzieć Twojemu oprogramowaniu, ile zarabiają (lub mało). To nieznane, nieokreślone; dlatego, aby umożliwić kontynuowanie działania oprogramowania, należy określić symbol zastępczy „null” dla tego pola danych w oprogramowaniu. Jest to technicznie ważne z perspektywy danych; to, czy jest ważne na poziomie biznesowym, zależy od tego, czy rzeczywista wartość liczbowa (nawet zero) jest wymagana do wykonania operacji matematycznej (takiej jak obliczenie podatków lub porównanie z progami określającymi korzyści).
W komputerach praktycznie każda operacja na zmiennej zawierającej null spowoduje albo zerowanie, albo wystąpienie błędu, ponieważ ponieważ jedna z wartości zmiennej nie jest znana, wyniku wyrażenia nie można poznać. Odpowiednikiem wykonywania matematyki na wartości zerowej byłoby, gdybym zapytał „Co jest pięć plus liczba, o której teraz myślę?”. Nie możesz dać jednoznacznej odpowiedzi, ponieważ nie znasz numeru, o którym myślę. Operacja na zero, z wyjątkiem dzielenia przez nią, jest zwykle poprawna i zwraca inną znaną, unikalną wartość.
źródło
NULL
.NULL
to wyraźny BRAK danych, nie jest symbolem zastępczym, jest pojedynczą reprezentacją braku danych.Boss-speak jest zawsze trudny ...
Zero to liczba, dzięki czemu możesz z nią robić różne rzeczy.
Null to jednorożec. Nie istnieje, więc nie możesz nic z tym zrobić.
źródło
NVL(somefield,'UNICORN')
)Po prostu sformułuj równania na zdania:
i
Oczywiście odpowiedź na oba pytania brzmi: „Nie można tego obliczyć, ponieważ brakuje jednego z najważniejszych elementów obliczeń”. To jest istota „null”.
Powinno być zatem łatwo wymyślić równoważne zdania o wartości zerowej i zobaczyć, w jaki sposób są one zasadniczo różne:
i
Chociaż odpowiedzi mogą nie mieć większego sensu (z zerami), przynajmniej można to obliczyć . W przypadku wartości null obliczenie nie jest nawet możliwe .
źródło
unknown
jest po prostu nie istnieje, ponieważ w przypadku wartościNULL
procentowej tak naprawdę nie ma ŻADNEJ wartości liczbowej (procentowej) ani innej wartości procentowej.Gdy rozmawiasz z szefem, użyj
0
zerowania i zerowania?
. To właściwie oddaje, że jest to symbol zastępczy coś ale nie wiem co to jest.źródło
Co powiesz na to:
0
jest odpowiedź na „ile płynu jest w pustej butelce?”.NULL
jest odpowiedzią na „jaka jest zawartość pustej butelki?”.Lub jeśli wyobrażasz sobie bezdzietnego mężczyznę:
0
NULL
Podstawowa różnica polega na tym, że
0
chodzi o mierzalną ilość, podczas gdyNULL
o istnieniu. Będąc ilością,0
reprezentuje coś , tj. Ilość, to znaczy0
bardzo podobnie0.000000001
reprezentuje ilość (taką, która w problemach codziennego życia jest w istocie nie do odróżnienia0
). W przeciwieństwie do tego nieNULL
reprezentuje nic . W rzeczywistości nie ma nic bliskiegoNULL
. Dowolna wartość zmiennej (i wyrażeń) to alboNULL
coś, albo coś.źródło
Tak zawsze z powodzeniem tłumaczę:
0 to liczba 0.
NULL to nirwana, nic, nada, niente, nieistnienie, nieobecność.
Operacje arytmetyczne zdefiniowane na NULL zawsze dają wynik NULL.
... do tej pory pracował dla mnie.
źródło
Dlaczego nie zacząłbyś od pytania „dlaczego wartość jest równa NULL?” To może pomóc ci wyjaśnić, dlaczego obliczenia mogą być nieprawidłowe.
Jeśli robiłeś okresowe aktualizacje, a nowa wartość się nie prezentowała (na przykład błąd sieci), to NULL może oznaczać, że obliczenia nie można wykonać, a stara wartość procentowa jest nieaktualna. Możesz chcieć pokazać symbol informujący o tym, że masz nieaktualne dane, aktualizacja nie przebiegła zgodnie z oczekiwaniami.
To samo może być prawdą w przypadku brakującej starej wartości, ale trudno mi zrozumieć, w jaki sposób można utracić starą wartość (chyba że jest to pierwsze obliczenie lub bateria ulegnie wyczerpaniu i dane zostaną utracone). Ale możesz chcieć pokaż symbol, który wskazuje również na ten stan.
W każdym razie nie chcesz, aby tak się stało:
Źródło obrazu
źródło
OldValue=Null
nie znasz starej wartości, więc różnica jest nieznana (Null)OldValue=0
Znasz Starą wartość, to 0, więc Różnica to Nieskończoność (Null)Jeśli ważne jest rozróżnienie tych dwóch, po prostu zapisz Starą wartość jako
PreviousValue
i wyświetl ją gdzieś.Edytuj na podstawie poniższego komentarza:
po prostu zapytam go, co chce zrobić w następujących sytuacjach i pokażę przykłady każdego z nich. Następnie zapytaj go: „Jaką wartość chcesz dla nich wyświetlić?”
Nie rób w żaden sposób problemu komputerowego. To pytanie biznesowe.
źródło
Odniosłem duży sukces dzięki „pustemu”.
W przypadku osób, które rozumieją podstawową algebrę (lub prosty pomysł, że można przypisać wartość do symbolu), idea „pustej” wartości wydaje się dość prosta i różni się od wartości zerowej.
źródło
NULL nie jest wartością, jest jej brak. Zero jest nadal wartością. (nawet jeśli można go użyć w przypadkach, w których nie można go w pełni ocenić.
Przez analogię (dobry sposób na wytłumaczenie non-teckies;
Chociaż w tym przypadku dwa mogą mieć tę samą wartość (w zależności od języka), są one koncepcyjnie bardzo różne
źródło
Naprawdę nie ma znaczenia, czy twój szef jest programistą. Problem jest konceptualny, a nie techniczny.
Poproś go, aby założył, że masz podwyżkę. Twoja stara pensja wynosiła 175 tys., Ale nowa pensja jest nieznana. Następnie zapytaj go - jaki procent podwyżek otrzymałeś?
Jeśli jest on arytmetycznie wyłączony, przeprowadź go przez cały proces, aż zobaczy, gdzie jest brakujące ogniwo.
źródło
Używam klapki monety. Prawda to głowy, fałsz to ogony, a jedna ręka spoczywa na drugiej, a moneta ma wartość NULL. Jeśli wiesz, że moneta jest główką, bardzo łatwo jest odpowiedzieć na pytanie „co jest przeciwieństwem tej wartości?”. Jedna ręka ukrywająca monetę pokazuje bardzo łatwo, że dana osoba może odpowiedzieć, jeśli pozwolisz jej zobaczyć aktualną wartość, ale ponieważ tego nie zrobisz, nie może ci dać odpowiedzi. Z tego, co wiedzą, nawet nie masz pod ręką monety!
źródło
Na polu NULL mówi, że nie mam pojęcia; nie ma tu żadnych danych - to odpowiednik pustego miejsca. Zero (0) mówi, że znam wartość tego pola wynoszącą dokładnie 0, np. Liczba całkowita, która jest o jeden mniejsza od liczby pierwszej.
Np. Mogę mieć kartkę, którą piszę do systemu komputerowego, która mówi, ile jest winien każdy klient. Klient A jest winien 50 USD, klient B jest winny 0 USD, a klient C jest winien NULL (????), ponieważ kwota kwoty należnej klientowi C została zredagowana (ktoś narysował nad nim czarną linię i jej nieczytelność; lub ich notatka mówiła, że ich rachunek za nie jest jeszcze gotowy). Mogę z łatwością powiedzieć, że klient B jest winien 0 USD, i mogę spokojnie powiedzieć, że nie wiem, co jest winien klientowi C. Nie chcę obciążać klienta kwotą 0 USD (ponieważ mogą być winni pieniądze).
źródło
Zakładając, że nie zajmujemy się rzeczami specyficznymi dla języka, takimi jak:
Różnica polega na tym, że 0 jest wartością liczbową, gdzie NULL nie. To jest jak pusta komórka na kartce papieru milimetrowego. Komórka może zawierać „0”, ale może być również pusta. Wartość null wciąż jest wartością, ale uważałeś ją za wyjątkową. Na przykład, jeśli twoje komórki były teraz znakami, możesz użyć pustej komórki jako spacji, a pusta komórka nie jest już możliwa, chyba że wyznaczysz lub stworzysz znak, który ma być przypadkiem szczególnym.
Co oznacza wartość null, zależy od sposobu interpretacji danych:
źródło
NULL == 0
działa dobrze, gdy masz do czynienia ze wskaźnikami zerowymi w C i in. Jeśli próbujesz wyjaśnić ten pomysł swojemu szefowi, który nie jest programistą, pokazując im kod, robisz to źle.Uruchomiłbym sprawdzanie NVL i jeśli jeden z parametrów ma wartość NULL, wyświetliłbym ciąg „N / A” (nie zwracaj „0”, ponieważ to po prostu nieprawda!).
Jest to coś, co z punktu widzenia menedżera wyglądałoby bardziej profesjonalnie niż wyświetlanie wartości NULL, która wygląda tak, jakbyś miał błąd (którego oczywiście nie masz - ale tak to wygląda w przypadku nieinżyniera) .
źródło
Wydaje się, że w jego umyśle brak nowej wartości nie oznacza, że jest nieznana; jest taki sam jak stara wartość. Możesz to odpowiednio zakodować bez wyjaśniania wartości null, ponieważ jego zdaniem nigdy nie ma wartości null.
Zamiast argumentować na temat wartości NULL, upewnij się, że nie spowoduje to innych problemów. Jakie są konsekwencje posiadania zbyt starych danych? Kiedy ktoś widzi zmianę 0%, czy naciska przycisk paniki? Czy to wypaczy jakieś analizy lub agregacje w czasie?
Po prostu nie sądzę, że potrzebuje samouczka programowania komputerowego, ale byłoby miło, gdyby wiedział, co to jest zero i zadał właściwe pytanie.
źródło
Jeśli
old value
wartość jest zerowa, wynik równań powinien być odpowiednio zerowy. Wynika to z faktu, że null nie jest liczbą, oznacza to nieznaną wartość. Dlatego obliczenia nie mogą być kontynuowane.Oczywiście twoje równanie również zawiedzie, jeśli
old value = 0
nie możesz podzielić przez zero.Zazwyczaj zajmujesz się tymi rzeczami za pomocą instrukcji case, która poprowadzi cię ścieżką tego, co chcesz pokazać. Więc jeśli chcesz, aby wynik był wyświetlany jako null, gdy nie możesz obliczyć (jak w przypadku wartości null lub zero, to zrobiłbyś instrukcję case coś w rodzaju
źródło
Kilka świetnych dyskusji na temat analogii w celu wyjaśnienia mechanicznych aspektów symbolu zerowego w porównaniu z innymi wartościami; jednak sedno tego pytania, być może z perspektywy menedżera, polegającego na odpowiednim wyrażeniu wyników w interfejsie użytkownika, reprezentujących znaczące granice zmienionej formuły stosowanej w odniesieniu do ich konkretnego problemu, można odpowiedzieć bardziej szczegółowo.
W przypadku forumula ze zmienioną wartością procentową należy przedstawić dwie rzeczy: kiedy coś jest mierzone po raz pierwszy i kiedy nic nie jest mierzone dla konkretnego aspektu.
Kiedy coś jest mierzone po raz pierwszy (oldValue === NULL), zmiana procentowa nie ma zastosowania; i można / należy wyraźnie zauważyć, że jest to pomiar początkowy dla tego cyklu pomiarowego.
Gdy nic nie jest mierzone (newValue === NULL), faktyczna wynikowa zmiana procentowa jest w rzeczywistości wartością zero (przy założeniu różnej wartości w poprzednim cyklu). W tym przypadku zero jest ogólnie odpowiednią odpowiedzią na formułę. W ostatnim cyklu nie było żadnego pomiaru, a zatem nie wystąpiła zmierzona zmiana. Nie powinno to oznaczać, że nic się nie zmieniło, tylko że nic nie zostało zmierzone, zarejestrowane ani przekazane w odniesieniu do tego aspektu.
źródło
Z pewnością rozumieją pojęcie umieszczania „nie dotyczy” w formularzu, gdy mają na myśli „niedostępne”. Na przykład, aby odpowiedzieć na pytanie: „Ile lat ma Benjamin Franklin?” odpowiedzi 0 i nie dotyczy są oczywiście różne (a ta druga jest poprawna). Podobnie odpowiedzi 0 i NULL są różne.
źródło
Gdybym musiał komuś wyjaśnić te pojęcia, narysowałbym dwa pola.
źródło
Różnica między 0 a zerowym jest jak różnica między posiadaniem konta bankowego z saldem 0 a brakiem konta bankowego.
źródło
Najlepiej to wyjaśnić za pomocą wskaźników.
Z tego powodu, jeśli Twój język nie śledzi zmiennych NULL, użyjesz wszystkiego, co już tam było . Może to prowadzić do przepełnienia, zepsucia stosu lub innych nieprzyjemnych efektów ubocznych.
Jeśli język nie śledzić zmienne NULL, wówczas będzie to miało podaną sprawę do obsługi tego. IE traktuje NULL jako zero, rzuca wyjątek, traktuje jak nop itp.
Aby zademonstrować swojemu szefowi, zdobądź kilka kawałków zużytego papieru.
źródło
Sądząc po różnorodności odpowiedzi na to pytanie, można wywnioskować, co już wiemy: null może oznaczać wiele rzeczy.
Albo oznacza to, że dane są:
Z tego i wielu innych powodów często przydatne jest zdefiniowanie struktury danych, która zawiera znaczenie wartości zerowej (np. Klasa Opcjonalna).
źródło
Osoba, która to zrobiła, nie ma poczucia humoru. FWIW Sam jestem architektem.
Brak jest pustką. Według legendy istnieje 17 smaków (możliwych znaczeń) Null, w tym „Nie wiem”, „Nie powiedzieli” i „Ktoś to złamał”. Nikt nie wie, dlaczego oprócz DBA i architektów, którzy patrzą z ciemnych pokoi na zaplecze zwykłych programistów. Uśmiechają się uprzejmie do szefów i poruszają językami z głęboką troską z niemożliwie złożoną mądrością, która musi tak być, i jest bardzo ważna, ale niezbyt jasna - ponieważ szefowie zapewniają ważną wydajność DBA i Architektowi. Czek płacowy. Mimo to Nulls nigdy nie zdradzają swoich tajemnic. To czarne dziury puste. Jedno zero nigdy nie równa się drugiemu zeru, ponieważ każda pustka jest pusta od równości i odmawia przyznania, że może nie być wcale pusta. Jest to oczywiście przypuszczenie, ponieważ żadna szanująca się wartość zerowa nigdy nie mogłaby tego przyznać. Czasami wartości zerowe zasysają ogromne ilości rzeczywistych danych do ich (). Nazywa się to błędem, ale tak naprawdę jest to pustka umysłu programisty zapominającego o zerach. Więc widzisz, że czasami rozmnażają się. Ale jak i dlaczego zawsze szybko się zapomina. () jest czasem znakiem zerowym lub jego kuzynem zerowym, ale paradoksalnie rzadko jest błędem.
Zero to określona ilość czegoś. Zera są znacznie szczęśliwsze niż zero. Zera są po prostu leniwe i nie dodają wiele do wyniku.
Dla nudnej, bardzo starej, dokładnej odpowiedzi Null jest reprezentacją „brakujących informacji i nieistotnych informacji” EF Codd, twórca SQL.
Codd wynalazł także trzecią normalną formę, którą stosuje się w umysłach młodych informatyków jako formę wstępnych tortur. Po opanowaniu jest całkowicie ignorowane. Podobne rzeczy dzieją się po wprowadzeniu projektowania obiektowego. I nigdy nie cieszymy się, że zostawiamy to w spokoju, więc pojawia się niedopasowanie impedancji, aby dodać do brawurowej walki.
źródło