[算表] Excel:一個故意保留下來的BUG--1900/2/29
官方說明(機器翻譯= =)
http://support.microsoft.com/kb/214326/zh-tw
論壇文章
http://www.officefans.net/cdb/viewthread.php?tid=1006
Excel中一個故意保存下來的Bug
在 Execlhome 應用論壇創建初期,有這樣一個帖子:「哪位能明示:1900年2月到底應該
是多少天?」
(請看http://club.excelhome.net/dispbb ... ID=3908&ID=4560)
參加討論的幾乎全是各版的版主。
在關於「1900年2月究竟有28天還是29天」的討論中,雖然有人猜疑,Excel 在這裡可能
有一個 Bug,但是當時或許誰也沒有想到,這居然是一個故意保存下來的 Bug!
原來早期的 Lotus-123 有一個 Bug,把不是閏年的1900年2月算成了閏年。而 Excel 的
設計者發現了這個問題,卻選擇了保留這個錯誤,以保持與 Lotus-123 的兼容性。(詳
情請看 John Walkenbach 在『Excel 2002 Formulas'中的這段話)
確實,如果我們當初在討論時再往前跨一步,測試一下 2100年、2300年、2500年的3月1
日減去1天,我們就會得出結論:能夠除盡100,但不能除盡400 的年份肯定不是閏年。不
過,誰會想到,Excel 中會有這樣的貓膩呢?
對於微軟這個不大不小的玩笑不盡服氣,我繼續對它進行測試,結果發現了另外一個「居
然」!
用 EDATE 這個函數(Mouths 為 1、-1)去計算 1900年的1月31日和3月31日,「居然」
是等於 1900年2月28日!
同一個 Excel,兩個均為正確的不同算法,居然可以算出兩個不同的結果!
我不禁對那些「倒霉」的用戶擔心起來:如果因為這一天的誤差導致重大的事故和損失,
該怨誰去呢?
※ 引述《sweedy (小米)》之銘言:
: (若是和其他不同軟體互動之問題 請記得一併填寫)
: 您所使用的軟體為: Office EXCEL
: 版本: 2007
: 問題: 起因是因為我想要自己寫一個算潤年的程式
: 想說用EXCEL做確認的動作
: 不過這時我發現了一個問題
: EXCEL中它是以1900年1月1日做為第一天來計算的,
: 1900年不為潤年,因為它為百年且不為400所整除,
: 所以當我輸入第59天時,它理所當然的為2月28日,
: 但是當我輸入第60天時,它還是2月28日,@@
: 到61天才會變成3月1日,所以我寫的程式永遠與EXCEL的答案差一天
: 這不知道算不算是個BUG,
: 也不知道我有沒有OP (已爬文但沒找到相關資訊)
: 請問各位大大,我應該相信我自己還是EXCEL咧..囧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.123.42.107
推
12/06 12:15, , 1F
12/06 12:15, 1F
推
12/07 00:44, , 2F
12/07 00:44, 2F
Office 近期熱門文章
PTT數位生活區 即時熱門文章
137
211