程序員為什么要一直改Bug?就這么說吧,你是一個優(yōu)秀的程序員,現(xiàn)在被要求寫一段程序:“輸入兩個數(shù)A、B,輸出它們的和。”
題目甚是簡單,你大筆一揮,寫下:輸入“A”、“B”;計算“C=A+B”;輸出“C”。
你自己測試了一下:輸入“1”、“2”;輸出“3”。程序很棒,于是你交給用戶了。
用戶:輸入“127”、“1”;輸出“-128”。
你思考了一下,原來是8位int只能支持-128~127的整數(shù)。于是你大筆一揮,改成了64位的int,這下能支持-2^63~2^63-1了。順便,你還編寫了一段數(shù)據(jù)驗證的判斷,如果超出int的范圍還會提示“數(shù)值過大”。非常貼心。
用戶:輸入“1.5”、“2.5”;輸出“3”。
你心想,當時沒人告訴我會有小數(shù)計算啊,過幾天豈不是還會有無理數(shù)運算。你和用戶一頓溝通,他向你發(fā)誓最多只會有小數(shù)計算,絕對不會有無理數(shù)。于是你把數(shù)據(jù)類型改成了double,這下可以支持小數(shù)了。
用戶:輸入“0.1”、“0.2”;輸出“0.300000000000004”。
你回顧了一下大學學到的知識,想起double類型并不是那么精確。所幸用戶不是開銀行的,對數(shù)據(jù)精確性要求不那么高,甚至偏差個±0.01都能接受。于是你在數(shù)據(jù)輸出時四舍五入了一下,保留兩位小數(shù),這下0.1+0.2=0.3了。
用戶:輸入“一”、“二”;輸出“0”。
你和用戶大吵了一架,終于說服他不在輸入框里填漢字。以防萬一,你給數(shù)據(jù)輸入加了一段驗證,只接受兩個帶符號小數(shù)。而且對于數(shù)字過大、過小都會提示超出范圍。這下終于沒問題了,你心想。
過了幾天,你在頭條上看到一個標題“為啥程序員不能一次性把程序寫好?”