Mengatasi masalah yang menggunakan rumus perubahan persen:
percent change = 100 * [(new value - old value) / old value]
Bagaimana saya menjelaskan perbedaannya jika new value or old value = NULL
, alih-alih 0
kepada seseorang yang mungkin bukan seorang programmer?
Bos saya bertanya-tanya mengapa ada string kosong di TextBox daripada nilai, karena kami memiliki nilai lama, tetapi bukan nilai baru.
NULL
adalah keadaan , bukan nilai - itu berarti Anda tidak tahu nilainya. Untuk SQL saya biasanya menggunakan analogi partai untuk menunjukkan.Jawaban:
Untuk menjelaskan kepada bos perbedaan antara "nol" dan "nol":
"Nol" adalah sebuah nilai. Ini adalah kuantitas nol yang unik dan dikenal, yang bermakna dalam aritmatika dan matematika lainnya.
"Null" tidak bernilai. Ini adalah "tempat penampung" untuk nilai data yang tidak diketahui atau tidak ditentukan. Ini hanya bermakna dalam konteks ini; operasi matematika tidak dapat dilakukan pada null (hasil dari operasi tersebut tidak terdefinisi, dan karenanya juga secara umum dinyatakan sebagai null).
Misalnya, seperti dalam komentar: "Berapa penghasilan tahunan Anda?" adalah pertanyaan yang membutuhkan jawaban numerik. "0" adalah jawaban yang benar-benar valid untuk seseorang yang tidak bekerja dan tidak memiliki pendapatan investasi. Jika pengguna tidak memasukkan nilai sama sekali, mereka tidak perlu menghasilkan uang; mereka hanya tidak ingin memberi tahu perangkat lunak Anda berapa banyak (atau sedikit) yang mereka hasilkan. Ini tidak dikenal, tidak ditentukan; Oleh karena itu, untuk memungkinkan perangkat lunak untuk melanjutkan, Anda menentukan placeholder "null" untuk bidang data dalam perangkat lunak. Secara teknis itu valid dari perspektif data; apakah valid pada tingkat bisnis tergantung pada apakah nilai numerik aktual (bahkan nol) diperlukan untuk melakukan operasi matematika (seperti perhitungan pajak, atau perbandingan dengan ambang batas yang menentukan manfaat).
Di komputer, hampir semua operasi pada variabel yang mengandung null akan menghasilkan null atau dalam kondisi kesalahan, karena karena salah satu nilai variabel tidak diketahui, hasil dari ekspresi tidak dapat diketahui. Setara dengan melakukan matematika pada nol akan jika saya bertanya kepada Anda "Apa lima ditambah angka yang saya pikirkan sekarang?". Tidak mungkin bagi Anda untuk memberikan jawaban yang pasti karena Anda tidak tahu nomor yang saya pikirkan. Operasi pada nol, kecuali untuk membaginya, biasanya valid dan akan mengembalikan nilai unik lain yang diketahui.
sumber
NULL
.NULL
adalah explict KURANGNYA data, tidak pengganti, itu adalah representasi soliter tunggal tidak ada data.Bicara bos selalu sulit ...
Nol adalah angka sehingga Anda dapat melakukan hal-hal dengannya.
Null adalah unicorn. Itu tidak ada sehingga Anda tidak bisa melakukan apa-apa dengannya.
sumber
NVL(somefield,'UNICORN')
)Ubah kata persamaan menjadi kalimat:
dan
Tentu saja, jawaban untuk keduanya adalah "Tidak dapat dihitung, karena salah satu bagian penting dari perhitungan hilang." Itulah esensi dari 'null'.
Maka seharusnya mudah untuk mengetahui kalimat yang setara dengan nol, dan melihat bagaimana mereka secara fundamental berbeda:
dan
Meskipun jawabannya mungkin tidak masuk akal (dengan nol), setidaknya itu bisa dihitung . Dengan nol, perhitungannya bahkan tidak mungkin .
sumber
unknown
itu tidak ada karena dalam kasusNULL
persentase sebenarnya tidak ada nilai numerik APAPUN (persentase) atau nilai persentase.Saat berbicara dengan atasan Anda, gunakan saja
0
untuk nol, dan?
untuk nol. Itu benar menangkap bahwa itu adalah pengganti untuk sesuatu tetapi Anda tidak tahu apa itu.sumber
Bagaimana dengan ini:
0
adalah jawaban untuk "berapa banyak cairan yang ada dalam botol kosong?".NULL
adalah jawaban untuk "apa isi botol kosong?".Atau jika Anda membayangkan seorang lelaki tanpa anak:
0
NULL
Perbedaan dasarnya
0
adalah tentang kuantitas yang dapat diukur, sedangkanNULL
tentang keberadaan. Menjadi kuantitas,0
merepresentasikan sesuatu , yaitu kuantitas, yaitu0
, mirip dengan0.000000001
merepresentasikan kuantitas (sesuatu yang dalam masalah setiap hari, kehidupan sebenarnya sangat dekat0
). Berbeda dengan itu tidakNULL
mewakili apa pun . Bahkan tidak ada yang dekatNULL
. Nilai variabel apa pun (dan ekspresi) adalah salah satuNULL
atau sesuatu.sumber
Begitulah cara saya selalu berhasil menjelaskannya:
0 adalah angka 0.
NULL adalah nirwana, tidak ada, nada, niente, tidak ada, tidak ada.
Operasi aritetis yang didefinisikan pada NULL selalu menghasilkan NULL sebagai hasilnya.
... bekerja untuk saya sejauh ini.
sumber
Mengapa Anda tidak memulai dengan mengajukan pertanyaan "mengapa nilainya sama dengan NULL?" Itu mungkin membantu Anda menjelaskan mengapa perhitungan mungkin tidak valid.
Jika Anda melakukan pembaruan berkala, dan nilai baru tidak muncul dengan sendirinya (misalnya kesalahan jaringan), maka NULL mungkin berarti perhitungan tidak dapat dilakukan dan nilai persen lama sudah basi. Anda mungkin ingin menunjukkan simbol yang menunjukkan Anda memiliki data basi, pembaruan tidak terjadi seperti yang diharapkan.
Hal yang sama mungkin benar untuk nilai lama yang hilang, tetapi saya kesulitan memahami bagaimana nilai lama dapat hilang (kecuali ini adalah perhitungan pertama, atau baterai mati dan data hilang.) Tetapi Anda mungkin ingin perlihatkan simbol yang menunjukkan kondisi ini juga.
Bagaimanapun Anda tidak ingin ini terjadi:
Sumber Gambar
sumber
OldValue=Null
Anda tidak tahu nilai Lama sehingga Perbedaannya Tidak Diketahui (Null)OldValue=0
Anda tahu nilai lama, itu adalah 0, jadi Perbedaannya adalah Infinity (Null)Jika penting untuk membedakan antara keduanya, cukup simpan nilai Lama sebagai
PreviousValue
dan tampilkan di suatu tempat.Sunting berdasarkan komentar di bawah ini:
Saya hanya akan bertanya kepadanya apa yang ingin dia lakukan dalam situasi berikut dan menunjukkan kepadanya contoh masing-masing. Kemudian, tanyakan kepadanya, "Nilai apa yang ingin Anda tampilkan untuk ini?"
Jangan dengan cara apa pun menjadikan ini masalah komputer .. Ini pertanyaan bisnis.
sumber
Saya sudah banyak sukses dengan 'kosong.'
Dengan orang-orang yang memahami aljabar dasar (atau gagasan sederhana yang dapat Anda tetapkan nilai pada simbol), gagasan nilai 'kosong' tampaknya cukup mudah dan berbeda dari nilai nol.
sumber
NULL bukan sebuah nilai, ini bukan nilai. Nol masih merupakan nilai. (bahkan jika itu dapat digunakan dalam kasus-kasus di mana ia tidak dapat sepenuhnya dievaluasi.
Dengan analogi (cara yang baik untuk menjelaskan kepada non-teckies;
Meskipun dalam kasus ini keduanya mungkin memiliki nilai yang sama (tergantung pada bahasa Anda) mereka secara konseptual sangat berbeda
sumber
Sungguh tidak relevan apakah bos Anda seorang programmer. Masalahnya adalah masalah konseptual, bukan teknis.
Minta dia untuk berasumsi kamu mendapat kenaikan gaji. Gaji lama Anda adalah 175 ribu, tetapi gaji baru Anda tidak diketahui. Kemudian tanyakan padanya - berapa persentase kenaikan yang Anda terima?
Jika dia dinonaktifkan secara aritmatika, berjalan melalui prosesnya sampai dia bisa melihat di mana tautan yang hilang.
sumber
Saya menggunakan flip koin. Benar adalah kepala, salah adalah ekor, dan satu tangan menangkup di atas yang lain menyembunyikan koin adalah NULL. Jika Anda tahu koin itu adalah kepala, sangat mudah untuk menjawab pertanyaan "apa kebalikan dari nilai ini?". Satu tangan menyembunyikan koin menunjukkan dengan sangat mudah bahwa orang tersebut dapat menjawab jika Anda membiarkan mereka melihat nilai saat ini, tetapi karena Anda tidak mau, mereka tidak dapat memberikan jawaban. Sejauh yang mereka tahu, Anda bahkan tidak memiliki koin di bawah tangan Anda!
sumber
Dalam sebuah bidang, NULL mengatakan saya tidak tahu; tidak ada data di sini - setara dengan kosong. Nol (0) mengatakan bahwa saya tahu nilai bidang ini tepatnya 0, misalnya bilangan bulat yang lebih rendah dari angka satu.
Misalnya, saya dapat memiliki selembar kertas yang saya ketikkan ke dalam sistem komputer yang mengatakan berapa banyak setiap pelanggan berutang. Pelanggan A berutang $ 50, pelanggan B berutang $ 0, dan pelanggan C berutang NULL (????), karena jumlah pelanggan yang berutang C nomor telah dihapus (seseorang menggambar garis hitam di atasnya dan tidak dapat dibaca; atau ada catatan yang mengatakan bahwa tagihan mereka untuk belum siap). Saya dapat dengan nyaman mengatakan bahwa pelanggan B berhutang $ 0, dan dapat dengan nyaman mengatakan bahwa saya tidak tahu berhutang kepada pelanggan C. Saya tidak ingin menagih pelanggan C $ 0 (karena mereka mungkin berutang uang).
sumber
Dengan asumsi kita tidak masuk ke hal-hal khusus bahasa seperti:
Perbedaannya adalah 0 adalah nilai numerik di mana NULL tidak. Itu seperti sel kosong di selembar kertas grafik. Sel dapat memiliki "0" di dalamnya, tetapi juga bisa kosong. Null masih bernilai, tetapi Anda menganggapnya istimewa. Misalnya, jika sel Anda sekarang karakter, Anda dapat menggunakan sel kosong sebagai spasi dan sel nol tidak lagi memungkinkan kecuali jika Anda menetapkan atau membuat karakter untuk menjadi kasus khusus.
Apa artinya null tergantung pada bagaimana data ditafsirkan:
sumber
NULL == 0
berfungsi dengan baik ketika Anda berurusan dengan pointer nol di C et al. Jika Anda mencoba menjelaskan ide tersebut kepada bos non-programmer Anda dengan menunjukkan kode mereka, Anda salah melakukannya.Saya akan menjalankan pemeriksaan NVL dan jika salah satu parameternya NULL saya akan menampilkan String "N / A" (jangan kembalikan "0" karena itu tidak benar!).
Ini adalah sesuatu yang, dari sudut pandang manajer, akan terlihat lebih profesional daripada menampilkan nilai NULL yang jenisnya seperti Anda memiliki bug (yang tentu saja tidak - tetapi itulah yang terlihat pada non-insinyur) .
sumber
Sepertinya dalam benaknya, tidak memiliki nilai baru tidak berarti itu tidak diketahui; itu sama dengan nilai lama. Anda dapat kode itu sesuai tanpa menjelaskan nol karena dalam pikirannya, itu tidak pernah nol.
Alih-alih berdebat tentang NULL, pastikan ini tidak membuat masalah lain. Apa konsekuensi dari memiliki data yang terlalu lama? Ketika seseorang melihat perubahan 0%, apakah mereka menekan tombol panik? Apakah ini akan memengaruhi analisis atau agregat dari waktu ke waktu?
Saya hanya tidak berpikir dia membutuhkan tutorial pemrograman komputer, tapi alangkah baiknya jika dia tahu apa itu null dan mengajukan pertanyaan yang benar.
sumber
Jika
old value
nol, hasil dari persamaan seharusnya bernilai nol. Ini karena null bukan angka, itu berarti nilai yang tidak diketahui. Karenanya perhitungan tidak dapat dilanjutkan.Tentu saja persamaan Anda juga gagal jika
old value = 0
Anda tidak dapat membaginya dengan nol.Biasanya Anda menangani hal-hal ini dengan pernyataan kasus yang akan membawa Anda pada jalan yang ingin Anda perlihatkan. Jadi jika Anda ingin hasilnya ditampilkan sebagai nol ketika Anda tidak dapat menghitung (seperti dengan nol atau nol, maka Anda akan melakukan pernyataan kasus seperti
sumber
Beberapa diskusi hebat tentang analogi untuk menjelaskan aspek mekanis dari simbol nol dibandingkan dengan nilai-nilai lain; Namun, inti dari pertanyaan ini mungkin dari sudut pandang manajer dalam secara memadai mengekspresikan hasil di UI, mewakili batas yang bermakna dari formula perubahan yang dapat diterjemahkan sebagaimana diterapkan pada masalah khusus mereka, dapat dijawab lebih spesifik, saya percaya.
Dalam kasus persentase perubahan forumula, dua hal perlu diwakili: ketika sesuatu pertama kali diukur, dan ketika tidak ada yang diukur untuk aspek tertentu.
Ketika sesuatu pertama kali diukur (oldValue === NULL), perubahan persentase tidak dapat diterapkan; dan dapat / harus secara eksplisit dicatat bahwa itu adalah pengukuran awal untuk siklus pengukuran itu.
Ketika tidak ada yang diukur (newValue === NULL), perubahan persen yang dihasilkan sebenarnya adalah nilai nol (dengan asumsi non-nol pada siklus sebelumnya). Nol umumnya merupakan jawaban yang sesuai untuk rumus dalam kasus ini. Tidak ada pengukuran dalam siklus terbaru ini, dan dengan demikian tidak ada perubahan yang terukur. Itu seharusnya tidak menyiratkan itu tidak berubah, hanya saja tidak ada yang diukur, dicatat, atau dikomunikasikan sehubungan dengan aspek itu.
sumber
Tentu saja mereka memahami konsep menempatkan "N / A" pada formulir ketika mereka berarti "tidak tersedia". Misalnya, untuk menjawab pertanyaan, "Berapa umur Benjamin Franklin?" jawaban 0 dan N / A jelas berbeda (dan yang terakhir benar). Demikian pula jawaban 0 dan NULL berbeda.
sumber
Jika saya harus menjelaskan konsep-konsep ini kepada seseorang, saya akan menggambar dua kotak.
sumber
Perbedaan antara 0 dan nol sama dengan perbedaan antara memiliki rekening bank dengan saldo 0 dan tidak memiliki rekening bank sama sekali.
sumber
Ini paling baik dijelaskan dengan petunjuk.
Karena itu, jika bahasa Anda tidak melacak variabel NULL untuk Anda, maka Anda akan menggunakan apa pun yang sudah ada . Hal ini dapat menyebabkan meluap, menumpuk korupsi, atau efek samping buruk lainnya.
Jika bahasa tidak melacak variabel NULL, maka itu akan memiliki kasus yang dinyatakan untuk menangani ini. Yaitu memperlakukan NULL sebagai nol, melempar pengecualian, memperlakukan sebagai tidak, dll.
Untuk menunjukkan kepada atasan Anda, dapatkan beberapa lembar kertas bekas.
sumber
Menilai dari beragam jawaban pada pertanyaan ini, dapat disimpulkan apa yang sudah kita ketahui: null dapat berarti banyak hal.
Entah itu berarti datanya adalah:
Untuk ini, dan banyak alasan lainnya, sering kali berguna untuk mendefinisikan struktur data yang merangkum arti dari nilai nol (misalnya kelas opsional).
sumber
Orang yang melihatnya tidak memiliki selera humor. FWIW Saya sendiri seorang Arsitek.
Null adalah kekosongan. Menurut legenda ada 17 rasa (kemungkinan arti) dari Null termasuk "Saya tidak tahu", "Mereka tidak mengatakan", dan "seseorang memecahkan ini". Tidak ada yang tahu mengapa kecuali DBA dan Arsitek yang cemberut dari kamar belakang yang gelap hanya pada programmer. Mereka tersenyum sopan kepada bos dan mengibas-ngibaskan lidah mereka dengan keprihatinan mendalam dengan kebijaksanaan rumit yang mustahil, dan itu sangat penting tetapi tidak terlalu jelas - karena bos memberikan kinerja penting kepada DBA dan Arsitek. Cek pembayaran. Meski begitu Nulls tidak pernah menceritakan rahasia mereka. Itu adalah lubang hitam kosong. Satu nol tidak pernah sama dengan nol lainnya karena setiap kekosongan kosong dari kesetaraan dan menolak untuk mengakui bahwa mungkin tidak semua kosong yang ada. Ini tentu saja merupakan dugaan karena tidak ada orang yang menghargai diri sendiri yang bisa mengakuinya. Terkadang nulls menyedot data nyata dalam jumlah besar ke () mereka. Ini disebut bug tetapi sebenarnya hanyalah kekosongan dari pikiran programmer yang lupa tentang nol. Jadi Anda melihat mereka berkembang biak terkadang. Namun bagaimana atau mengapa selalu cepat dilupakan. () Kadang-kadang merupakan tanda nol atau sepupunya tetapi secara paradoks jarang bug.
Nol adalah jumlah sesuatu yang pasti. Nol jauh lebih bahagia daripada nol. Nol hanya malas dan tidak menambah banyak hasilnya.
Untuk jawaban yang membosankan dan akurat, Null adalah representasi dari "informasi yang hilang dan informasi yang tidak dapat diterapkan" EF Codd, pencipta SQL.
Codd juga menemukan Bentuk Normal ke-3 yang diterapkan pada pikiran Ilmuwan Komputer muda sebagai bentuk penyiksaan awal. Setelah dikuasai itu benar-benar diabaikan. Hal serupa terjadi ketika Desain Berorientasi Objek diperkenalkan. Dan kami tidak pernah senang meninggalkannya sendirian, jadi datanglah ketidakcocokan impedansi untuk menambah keributan bermain-main.
sumber