Работа над проблемой, которая использует формулу процентного изменения:
percent change = 100 * [(new value - old value) / old value]
Как бы я объяснил разницу new value or old value = NULL
, а не 0
тому, кто не может быть программистом?
Моему боссу интересно, почему в TextBox есть пустая строка, а не значение, потому что у нас есть старое значение, но не новое значение.
NULL
это состояние , а не значение - это означает, что вы не знаете значение. Для SQL я обычно использую партийную аналогию для демонстрации.Ответы:
Чтобы объяснить начальнику разницу между «ноль» и «ноль»:
«Ноль» - это ценность. Это уникальное, известное количество нулей, которое имеет смысл в арифметике и других математических вычислениях.
«Нуль» не является значением. Это «заполнитель» для значения данных, которое неизвестно или не указано. Это имеет смысл только в этом контексте; математические операции не могут быть выполнены с нулем (результат любой такой операции не определен, и поэтому также обычно представлен как нуль).
Например, как в комментариях: «Каков ваш годовой доход?» это вопрос, требующий числового ответа. «0» - это совершенно правильный ответ для тех, кто не работает и не имеет инвестиционного дохода. Если пользователь вообще не вводит значение, он не обязательно зарабатывает деньги; они просто не хотели сообщать вашему программному обеспечению, сколько (или мало) они зарабатывают. Это неизвестно, не указано; поэтому, чтобы позволить программному обеспечению продолжать работу, вы указываете «нулевой» заполнитель для этого поля данных в программном обеспечении. Это технически верно с точки зрения данных; действительно ли это на бизнес-уровне, зависит от того, требуется ли фактическое числовое значение (даже ноль) для выполнения математической операции (такой как расчет налогов или сравнение с порогами, определяющими выгоды).
В компьютерах практически любая операция с переменной, содержащей null, приведет к нулю или к ошибке, поскольку, поскольку одно из значений переменной неизвестно, результат выражения не может быть известен. Эквивалентом выполнения математики на нуле было бы, если бы я спросил вас: «Сколько пять плюс число, о котором я сейчас думаю?». Вы не можете дать определенный ответ, потому что вы не знаете число, о котором я думаю. Операция с нулем, за исключением деления на нее, обычно действительна и возвращает другое известное уникальное значение.
источник
NULL
.NULL
это явный НЕДОСТАТОК данных, это не заполнитель, это одиночное представление без данных.Говорить с боссом всегда сложно ...
Ноль - это число, с которым можно что-то делать.
Нуль - это единорог. Этого не существует, поэтому вы ничего не можете сделать с ним.
источник
NVL(somefield,'UNICORN')
)Просто перефразируйте уравнения в предложения:
а также
Конечно, ответ на оба вопроса таков: «Он не может быть рассчитан, потому что одна из критических частей расчета отсутствует». В этом суть «нуля».
Тогда должно быть легко вычислить эквивалентные предложения с нулем и увидеть, как они принципиально отличаются:
а также
Хотя ответы могут не иметь большого смысла (с нулями), по крайней мере, их можно рассчитать . При нулевом, вычисление даже невозможно .
источник
unknown
просто не существует, потому что в случаеNULL
процента фактически нет НИКАКОГО числового значения (в процентах) или иного процентного значения.Когда говорите с вашим боссом, просто используйте
0
для нуля и?
для нуля. Это правильно показывает, что это заменитель чего-то, но вы не знаете, что это такое.источник
Как насчет этого:
0
ответ на вопрос «сколько жидкости в пустой бутылке?».NULL
является ответом на вопрос «что является содержимым пустой бутылки?».Или если представить себе бездетного мужчину
0
NULL
Основное различие заключается в том, что
0
речь идет об измеримом количестве, аNULL
о существовании. Будучи величиной,0
представляет что-то , то есть количество, то есть0
очень похоже0.000000001
представляет количество (то, что в повседневных проблемах фактически неразличимо близко0
). В отличие от этого ничего неNULL
представляет . На самом деле нет ничего близкого к . Значением любой переменной (и выражений) является либо или что-то.NULL
NULL
источник
Вот как я всегда успешно это объясняю:
0 это число 0.
NULL - это нирвана, ничто, нада, ниенте, небытие, отсутствие.
Арифметические операции, определенные для NULL, всегда приводят к NULL в результате.
... работал для меня до сих пор.
источник
Почему бы вам не начать с вопроса "почему значение равно NULL?" Это может помочь вам объяснить, почему расчет может быть неверным.
Если вы выполняли периодические обновления, а новое значение не отображалось (например, ошибка сети), то значение NULL может означать, что вычисление не может быть выполнено, а старое значение процента устарело. Возможно, вы захотите показать символ, указывающий, что у вас устаревшие данные, обновление не произошло, как ожидалось.
То же самое может быть верно для отсутствующего старого значения, но мне трудно понять, как старое значение может быть потеряно (если это не первый расчет, или батарея не разрядилась и данные были потеряны.) Но вы можете захотеть покажите символ, который также указывает на это условие.
В любом случае вы не хотите, чтобы это произошло:
Источник изображения
источник
OldValue=Null
вы не знаете старое значение, поэтому разница неизвестна (ноль)OldValue=0
Вы знаете старое значение, оно равно 0, поэтому разница равна бесконечности (ноль)Если важно различать эти два значения, просто сохраните старое значение как
PreviousValue
и отобразите его где-нибудь.Отредактируйте на основе комментария ниже:
я бы просто спросил его, что он хочет делать в следующих ситуациях, и покажу ему примеры каждого из них. Затем спросите его: «Какую ценность вы хотите показать для них?»
Ни в коем случае не делайте это компьютерной проблемой. Это деловой вопрос.
источник
У меня был большой успех с «пустым».
С людьми, которые понимают базовую алгебру (или простую идею, что вы можете присвоить значение символу), идея «пустого» значения кажется довольно простой и отличной от нулевого значения.
источник
NULL - это не значение, его отсутствие. Ноль по-прежнему значение. (даже если он может быть использован в тех случаях, когда он не может быть полностью оценен.
По аналогии (хороший способ объяснить не текис;
Хотя в этом случае оба могут иметь одинаковое значение (в зависимости от вашего языка), они концептуально очень разные
источник
На самом деле не имеет значения, является ли ваш начальник программистом. Вопрос концептуальный, а не технический.
Попросите его предположить, что вы получили повышение. Ваша старая зарплата была 175 тысяч, но ваша новая зарплата неизвестна. Тогда спросите его - какой процентный рейз вы получили?
Если он арифметически отключен, проведите его до тех пор, пока он не увидит, где находится недостающее звено.
источник
Я использую бросок монеты. Истина - это головы, ложь - это хвосты, а одна рука, прикрывающая монету другой рукой, равна нулю. Если вы знаете, что монета - это головы, очень легко ответить на вопрос «что противоположно этому значению?». Одна рука, скрывающая монету, очень легко показывает, что человек мог бы ответить, если бы вы позволили ему увидеть текущее значение, но так как вы не сможете, он не может дать вам ответ. Насколько они знают, у вас даже нет монеты под рукой!
источник
В поле NULL говорит, что я понятия не имею; здесь нет данных - это эквивалент пробела. Ноль (0) говорит, что я знаю, что значение этого поля точно равно 0, например, целое число на единицу меньше, чем число один.
Например, у меня мог бы быть лист бумаги, который я печатаю в компьютерную систему, который говорит, сколько должен каждый клиент. Клиент A должен 50 $, клиент B должен 0 $, а клиент C должен NULL (????), потому что сумма, которую должен клиент C, была отредактирована (кто-то нарисовал черную линию над ним и ее нечитаемо, или они написали, что их счет за еще не готов). Я могу с уверенностью сказать, что клиент B должен 0 долларов, и могу с комфортом сказать, что я не знаю, что должен клиент C. Я не хочу взимать с клиента C $ 0 (потому что он может быть должен).
источник
Предполагая, что мы не разбираемся с языками, такими как:
Разница в том, что 0 - это числовое значение, а NULL - нет. Это как пустая ячейка на листе миллиметровки. Ячейка может иметь «0», но она также может быть пустой. Ноль все еще является значением, но вы сочли его особенным. Например, если ваши ячейки теперь были символами, вы можете использовать пустую ячейку в качестве пробела, и нулевая ячейка больше невозможна, если вы не назначите или не создадите символ в качестве особого случая.
Значение null зависит от того, как интерпретируются данные:
источник
NULL == 0
отлично работает, когда вы имеете дело с нулевыми указателями в C et al. Если вы пытаетесь объяснить идею своему боссу, не являющемуся программистом, показывая им код, вы делаете это неправильно.Я бы запустил проверку NVL, и если бы один из параметров был NULL, я бы вывел строку «N / A» (не возвращает «0», так как это просто неверно!).
Это то, что, с точки зрения менеджера, выглядело бы более профессионально, чем отображение значения NULL, которое выглядит так, как будто у вас есть ошибка (чего, конечно, нет - но это выглядит не для инженера) ,
источник
Похоже, в его уме отсутствие новой ценности не означает, что она неизвестна; это то же самое, что и старое значение. Вы можете кодировать это соответственно, не объясняя ноль, потому что, по его мнению, это никогда не нуль.
Вместо того, чтобы спорить о NULL, просто убедитесь, что это не создает других проблем. Каковы последствия наличия устаревших данных? Когда кто-то видит изменение на 0%, они нажимают кнопку паники? Будет ли это искажать какой-либо анализ или совокупности с течением времени?
Я просто не думаю, что ему нужно руководство по компьютерному программированию, но было бы неплохо, если бы он знал, что такое ноль и задавал правильный вопрос.
источник
Если значение
old value
равно нулю, результат уравнений должен быть по праву равен нулю. Это потому, что ноль не является числом, это означает неизвестное значение. Поэтому расчет не может продолжаться.Конечно, ваше уравнение также не выполняется, если
old value = 0
вы не можете разделить на ноль.Обычно вы обрабатываете эти вещи с помощью оператора case, который укажет вам путь того, что вы хотите показать. Поэтому, если вы хотите, чтобы результат показывался как нулевой, когда вы не можете вычислить (как с нулевым или нулевым, то вы бы сделали оператор case что-то вроде
источник
Некоторое большое обсуждение аналогий для объяснения механических аспектов нулевого символа по сравнению с другими значениями; однако суть этого вопроса, возможно, с точки зрения менеджера в адекватном выражении результатов в пользовательском интерфейсе, представляющих значимые пределы формулы измененного значения применительно к их конкретной проблеме, можно ответить более конкретно, как я полагаю.
В случае изменения процентного соотношения между форумом необходимо представить две вещи: когда что-то впервые измеряется и когда ничего не измеряется для конкретного аспекта.
Когда что-то измеряется впервые (oldValue === NULL), изменение в процентах не применяется; и можно / следует четко отметить, что это начальное измерение для этого цикла измерений.
Когда ничего не измеряется (newValue === NULL), фактическое результирующее процентное изменение фактически равно значению нуля (при условии, что оно не равно нулю в предыдущем цикле). Ноль, как правило, является подходящим ответом на формулу в этом случае. В этом последнем цикле не было измерений, и, следовательно, не было измеренных изменений Это не должно означать, что оно не изменилось, просто ничего не было измерено, записано или передано в отношении этого аспекта.
источник
Конечно, они понимают концепцию помещения «N / A» в форму, когда они означают «недоступен». Например, чтобы ответить на вопрос: «Сколько лет Бенджамину Франклину?» ответы 0 и N / A, очевидно, разные (и последний является правильным). Аналогично, ответы 0 и NULL разные.
источник
Если бы мне пришлось кому-то объяснять эти концепции, я бы нарисовал две рамки.
источник
Разница между 0 и нулем подобна разнице между наличием банковского счета с балансом 0 и отсутствием банковского счета вообще.
источник
Это лучше всего объяснить с помощью указателей.
Из-за этого, если ваш язык не отслеживает переменные NULL для вас, вы будете использовать то, что уже было там . Это может привести к переполнению, повреждению стека или другим неприятным побочным эффектам.
Если язык делает отслеживать NULL переменных, то он будет иметь заявленный случай для обработки этого. IE обрабатывает NULL как ноль, генерирует исключение, обрабатывает как nop и т. Д.
Чтобы продемонстрировать своему боссу, возьмите несколько кусков использованной бумаги.
источник
Судя по разнообразию ответов на этот вопрос, можно сделать вывод, что мы уже знаем: нуль может означать много вещей.
Либо это означает, что данные:
По этой и многим другим причинам часто полезно определить структуру данных, которая инкапсулирует значение нулевого значения (например, необязательный класс).
источник
Человек, который это сделал, не имеет чувства юмора. FWIW Я сам архитектор.
Ноль - это пустота. Согласно легенде, есть 17 разновидностей (возможных значений) Null, включая «Я не знаю», «Они не сказали» и «кто-то сломал это». Никто не знает почему, кроме администраторов баз данных и архитекторов, которые хмуро смотрят из темных комнат на простых программистов. Они вежливо улыбаются боссам и машут языками, глубоко озабоченные невероятно сложной мудростью, которая должна быть такой, и это очень важно, но не очень ясно - потому что боссы обеспечивают важную производительность для администратора баз данных и архитектора. Чек оплаты. Несмотря на это, Nulls никогда не рассказывают свои секреты. Они черные дыры пустые. Один ноль никогда не равен другому нуль, потому что каждая пустота пуста от равенства и отказывается признать, что она может быть не совсем пустой. Это, конечно, гипотеза, потому что ни один уважающий себя нуль никогда не сможет это признать. Иногда нули засасывают огромное количество реальных данных в их (). Это называется ошибкой, но на самом деле это просто пустота в памяти программиста, забывшего о нулях. Итак, вы видите, что они иногда размножаются. Но как и почему всегда быстро забывают. () иногда является признаком нуля или его двоюродного брата, но, как это ни парадоксально, редко является ошибкой.
Ноль - это определенное количество чего-либо. Нули намного счастливее нуля. Нули просто ленивы и ничего не добавляют к результату.
Для скучного, очень старого точного ответа Null - это представление «недостающей информации и неприменимой информации» EF Codd, создатель SQL.
Кодд также изобрел 3-ую Нормальную Форму, которая применяется к уму молодых учёных-компьютерщиков как форма предварительной пытки. После освоения он полностью игнорируется. Подобные вещи случаются, когда вводится объектно-ориентированный дизайн. И мы никогда не будем счастливы оставить это в покое, поэтому вместе с этим возникает несоответствие импеданса, чтобы добавить в резвую драку.
источник