web-dev-qa-db-ja.com

NULLとゼロの違いを説明するにはどうすればよいですか?

パーセント変更式を使用する問題に取り組む:

percent change =  100 * [(new value - old value) / old value]

プログラマーではない可能性がある人に、new value or old value = NULLではなく0の場合の違いをどのように説明しますか?

上司は、なぜ値ではなくTextBoxに空の文字列があるのか​​疑問に思っています。古い値はありますが、新しい値はないからです。

60
O.O

「ゼロ」と「ヌル」の違いを上司に説明するには:

「ゼロ」は価値です。これはユニークな既知のゼロの量であり、算術およびその他の数学で意味があります。

「Null」は値ではありません。これは、不明または指定されていないデータ値の「プレースホルダー」です。このコンテキストでのみ意味があります。数学演算はnullに対して実行できません(そのような演算の結果は定義されていないため、通常nullとしても表されます)。

たとえば、コメントのように: "あなたの年間収入は何ですか?"数値の回答が必要な質問です。 「0」は、仕事をせず、投資収入がない人にとって完全に有効な答えです。ユーザーが値をまったく入力しなくても、必ずしもお金を稼ぐ必要はありません。彼らはあなたのソフトウェアに彼らがどのくらい(または少し)作るかを伝えたくなかったのです。これは不明であり、指定されていません。したがって、ソフトウェアを続行できるようにするには、ソフトウェア内のそのデータフィールドに「null」プレースホルダーを指定します。これは、データの観点からは技術的に有効です。ビジネスレベルで有効かどうかは、数学演算(税金の計算、またはメリットを決定するしきい値との比較など)を実行するために実際の数値(ゼロでも)が必要かどうかによって異なります。

コンピューターでは、変数の値の1つが不明であるため、式の結果を知ることができないため、nullを含む変数に対する実質的にすべての操作は、nullまたはエラー状態になります。 nullで数学を実行するのと同じことは、「5と、今考えている数の和は何ですか?」あなたが私が考えている数を知らないので、あなたが明確な答えを出すことは不可能です。ゼロでの演算は、それによる除算を除いて、通常は有効であり、別の既知の一意の値を返します。

101
KeithS

ボススピークは常に厳しいです...

ゼロは数値なので、それを使用して処理を実行できます。

ヌルはユニコーンです。それは存在しないので、それを使って何もすることはできません。

173
Dave Wise

方程式を文に言い換えるだけです:

不明な値で開始し、最終的に150になる場合、パーセンテージの変化は何ですか?」

そして

「85から始めて、一部の不明な値になる場合のパーセンテージの変化は何ですか?」

もちろん、両方に対する答えは「計算の重要な部分の1つが欠落しているため、計算できません。」これが「null」の本質です。

次に、ゼロで同等の文を見つけ、それらが根本的にどのように異なるかを確認するのは簡単です。

「0から始めて150にしてしまうと、変化率はどうなりますか?」

そして

「85から始めて0にしてしまうと、変化率はどうなりますか?」

答えは(ゼロでは)あまり意味がないかもしれませんが、少なくとも計算できますです。 nullの場合、計算は不可能です

38
Eric King

上司と話すときは、0はゼロ、? nullの場合。 somethingのプレースホルダーであることを正しくキャプチャしますが、それが何であるかはわかりません。

20
Michael Haren

これはどう:

  • 0は、「空のボトルにはどのくらいの液体があるのですか?」に対する答えです。
  • NULLは、「空のボトルの内容は何ですか?」に対する答えです。

または、子供がいない男性を想像してみてください。

  • 彼の子供の数は0です
  • 彼の最年長の子供はNULLです

基本的な違いは、0は測定可能な量についてであり、NULLは存在についてであるということです。量であることから、0somethingを表します。つまり、0と同様に0.000000001は量(日常生活で問題となるもの)を表します実際には0)と区別がつかないほどです。それとは対照的に、NULLnothingを表します。実際、NULLに近いものはありません。変数(および式)の値はNULLまたは何かです。

12
back2dos

それが私がいつもうまく説明している方法です:

0は数値0です。

NULLはニルヴァーナ、ナッシング、ナダ、ニエンテ、非存在、不在です。

NULLで定義された算術演算は、常に結果としてNULLになります。

...これまでのところ私のために働いた。

8
Falcon

「なぜ値がNULLに等しいのか」という質問から始めないのはなぜですか。これは、計算が無効になる理由を説明するのに役立ちます。

定期的な更新を行っていて、新しい値が表示されなかった場合(たとえば、ネットワークエラー)、NULLは計算が実行できず、古いパーセント値が古いことを意味する場合があります。古くなったデータがあることを示す記号を表示すると、更新が期待どおりに行われません。

同じことが古い値がない場合にも当てはまるかもしれませんが、古い値がどのように失われるかを理解するのに苦労します(これが最初の計算でない場合、またはバッテリーが切れてデータが失われた場合を除きます)。しかし、この状態を示す記号も表示します。

とにかく、あなたはこれを起こしたくない:

enter image description here

画像ソース

7
Jim

OldValue=Null古い値がわからないため、違いは不明(Null)

OldValue=0 Oldの値を知っています。0なので、DifferenceはInfinity(Null)です。

これら2つを区別することが重要な場合は、Old値をPreviousValueとして保存し、どこかに表示します。


以下のコメントに基づいて編集:
次の状況で彼が何をしたいかを彼に尋ね、これらのそれぞれの例を示します。次に、「これらにどのような値を表示しますか?」と尋ねます。

決してこれをコンピュータの問題にしないでください。ビジネス上の問題です。

5
Morons

私は「ブランク」で多くの成功を収めてきました。

基本的な代数(またはシンボルに値を割り当てることができるという単純な考え方)を理解している人にとって、「空白」の値の考え方はかなり単純で、ゼロの値とは異なります。

4
Jonathan Rich

NULLは値ではなく、値がありません。ゼロはまだ値です。 (十分に評価できない場合でも使用できます。

類推(非teckiesに説明する良い方法。

if I have three apples then I subtract three apples how many apples do I have? is 0

If I have a bag of apples and I never look in the bag, how many apples do I have? is null

この場合、2つは同じ値(言語によって異なります)になる場合がありますが、概念的には非常に異なります。

4
Tom Squires

上司がプログラマであるかどうかは実際には関係ありません。問題は技術的な問題ではなく、概念的な問題です。

昇給したと思い込んでもらいます。あなたの古い給与は175kでしたが、新しい給与は不明です。それから彼に尋ねてください-あなたは何パーセントの昇給を受けましたか?

彼が算術的に無効になっている場合は、ミッシングリンクがどこにあるかがわかるまでプロセスを進めます。

4

コインフリップを使用しています。真は表であり、偽は裏であり、片方の手がもう一方を隠してコインを隠しているのはNULLです。コインが表であることがわかっている場合、「この値の反対は何ですか?」という質問に答えるのは非常に簡単です。コインを片手で隠すと、現在の価値を見せるとcouldと答える人がいることを非常に簡単に示します。彼らが知っているすべてのために、あなたはあなたの手の下にコインさえ持っていません!

3
Bryan Boettcher

次のような言語固有のものには入りません:

#define NULL 0

違いは、0はNULLでない数値であるということです。方眼紙の空のセルのようなものです。セルには「0」を含めることができますが、空にすることもできます。 nullはまだ価値がありますが、あなたはそれを特別だと考えました。たとえば、セルが文字になっている場合、空のセルをスペースとして使用できます。特殊なケースとして文字を指定または作成しない限り、nullセルは使用できなくなります。

Nullの意味は、データの解釈方法によって異なります。

  • NULLデータは「まだ提供されていない」ことを意味する場合があり、プログラムは値を再度チェックする前にしばらく待機します。
  • データはnull値を持つことができない場合があります。厳密に整数として解釈される可能性があり、整数以外の値は不可能です。
  • 通常、メモリでは、アドレス0はnullとして解釈されます。つまり、使用できません。
1

NVLチェックを実行し、パラメーターの1つがNULLの場合、文字列 "N/A"を表示します( "0"を返さないでください。真実ではないためです)。

これは、マネージャーの観点から見ると、よりプロフェッショナルに見え、バグがあるように見えるNULL値を表示するものです(もちろん、そうではありません-しかし、それは非エンジニアに見える方法です)。 。

1
alfasin

古い値はありますが、新しい値はありません。

彼の考えでは、新しい値がないことは、それが未知であることを意味するわけではないようです。古い値と同じです。彼の考えでは、nullになることは決してないので、nullを説明しなくても、それに応じてコード化できます。

NULLに関するポイントを議論する代わりに、これが他の問題を引き起こさないことを確認してください。古すぎるデータがあるとどのような影響がありますか?誰かが0%の変化を見たとき、彼らはパニックボタンを押しますか?これにより、分析や集計が時間の経過とともに歪むのでしょうか?

私は彼がコンピュータープログラミングチュートリアルを必要としているとは思いませんが、ヌルが何であるかを知っていて、代わりに正しい質問をした方がいいでしょう。

1
JeffO

他の値と比較したヌルシンボルの機械的側面を説明するための類推に関するいくつかの素晴らしい議論。しかし、おそらくUIで結果を適切に表現する上でのマネージャーの観点からのこの質問の核心は、特定の問題に適用されるperecnt変更式の意味のある制限を表し、より具体的に回答できると私は信じています。

パーセンテージが変化したパーセンテージの場合、2つの要素を表す必要があります。最初に何かが測定されたときと、特定の側面について何も測定されなかったときです。

何かが最初に測定されたとき(oldValue === NULL)、パーセンテージの変更は適用されません。そして、それはその測定サイクルの最初の測定値であることに明確に注意する必要があります。

何も測定されていない場合(newValue === NULL)、実際の結果のパーセント変化は実際にはゼロの値です(前のサイクルでnullでないと仮定)。この場合、一般的にゼロは式に対する適切な答えです。この最新のサイクルには測定がなかったため、測定された変化はありませんでした。それは、それが変化しなかったことを意味するのではなく、その側面に関して何も測定、記録、または伝達されなかっただけです。

1
JustinC

old value is null方程式の結果は当然nullです。これは、nullが数値ではないため、不明な値を意味します。したがって、計算を続行できません。

もちろん、あなたの方程式はold value = 0ゼロで除算できないため。

通常、これらのことは、表示したいもののパスを取得するcaseステートメントで処理します。したがって、計算できないときに結果をnullとして表示したい場合(nullまたはゼロの場合と同様)、次のようなcaseステートメントを実行します。

case when [old value] = 0 then null 
else 100 * (([old value] - [new value]) /[old value]) 
end
1
HLGEM

フィールドでは、NULLは私には分からないと言っています。ここにはデータはありません-空白に相当します。ゼロ(0)は、このフィールドの値が正確に0であることを私が知っていることを示します(たとえば、1よりも1小さい整数)。

たとえば、コンピュータシステムに入力している各シートに、各顧客の負担額を記載することができます。顧客Aは$ 50を借りており、顧客Bは$ 0を借りており、顧客CはNULL(????)を借りている。彼らの法案はまだ準備ができていません)。私は顧客Bが$ 0を借りていると快適に言うことができます。私は顧客Cに0ドルを請求しません(彼らはお金を借りている可能性があるため)。

1
dr jimbob

確かに彼らは、「利用不可」を意味するとき、フォームに「N/A」を置くという概念を理解しています。たとえば、「ベンジャミンフランクリンは何歳ですか」という質問に答えるために。答え0とN/Aは明らかに異なります(後者は正しいです)。同様に、回答0とNULLは異なります。

0
Scott Whitlock
  • NULLは値がないことです。
  • -Zero-は値であり、その値は-Zero-です。

これらの概念を誰かに説明する必要がある場合は、2つのボックスを描画します。

  • 空のボックスはNULLを表します。
  • 数字が-Zero-のボックスは、-Zero-を表します。
0
Jim G.

0とnullの違いは、残高が0の銀行口座があることと、銀行口座がないことの違いに似ています。

0
JSR