跳至內容

10000年問題

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

10000年問題Year 10000 Problem,簡稱Y10K)是所有軟體可能在表示五位數年份時發生的問題的總稱。在2000年問題引起人們關注的一段時間中,10000年問題曾被以幽默的方式被人們在媒體中披露。實際上,在10000年時,由於未來科技及軟體的進步-不再只以少數四位數字表示年份,這可能不再是個問題。

10000年問題
全球——9999年12月31日
距今還有2912850
以當地時間計算
如果發現倒數時間不準確,請清除頁面快取

需處理日期之軟體可能發生的問題

[編輯]

許多需處理日期的程式會在2000年時將年份錯誤顯示為1900年、19100年或100年,因為工程師直接在以兩位數記錄的年份前面加上「19」以簡化程式或節省記憶體空間。這類的日期顯示錯誤不太可能在10000年來臨時再度發生,因為這種記錄方式在此時是沒有用處的。然而,部份程式在處理日期時只會顯示末4碼的年份。這可能會導致10000年被顯示為「0000年」。

這個問題可以在今日相當普及的試算表軟體Microsoft Excel中發現。因為它以「自1899年12月31日起經過的天數」來儲存日期(以此規則,第1天是1900年1月1日)。在資料庫軟體Microsoft Access中也有同樣的問題。它以「自1899年12月30日起經過的天數」來儲存日期(第一天是1899年12月31日)。在上述任一個程式中,輸入第2958465天會產生日期9999年12月31日。

對此數值再加1(即2958466)則會造成程式語言中的溢位Excel中為顯示一列#號),但事實上,2958465的二進制表示為101101'00100100'10000001,而2958466則是101101'00100100'10000010。這兩個值在二進制中皆為22位數。在這些軟體中提及的溢位問題最有可能是源於它們的浮點數表示法(在Excel中,第1.5天是1900年1月1日的12:00:00)。它們可能被以變種的IEEE浮點標準儲存。而此一部份之數字有23位數的空間。

恆今基金會正嘗試促進以5位數書寫/記錄年份的習慣。也就是說,2000年將會被記錄為「02000」,如此將能預防10000年問題(一萬年蟲問題),但這將再次遇到100000年問題(十萬年蟲問題)。

有記錄的問題

[編輯]

2000年問題因為以2位數字表示4位元數年份,而前兩位的"世紀"年份無法被正確決定而產生。被記錄的年份應該加上2位的"世紀"年份以解決此問題。10000年問題不需要更新任何舊紀錄,因為4位元數字已經足夠紀錄4位元數的年份。它將只需要新的紀錄方式以記錄5位數年份。然而,仍然有一個在使用字典序(lexical sorting)記錄時可能會發生的問題。例如:在表示10000年的日期時,它可能會出現在1000年的旁邊,而不是在9999年的旁邊。

參看

[編輯]

外部連結

[編輯]