金鐘河
1982年1月,溫哥華證券交易所公布了新的股票指數。該指數的初始值是1000.000,22個月后,股票指數滑到了520左右。這段時間沒有發生過大的經濟蕭條或外匯危機,股票指數為什么縮水了一半呢?
股票指數是在證券交易所上市的所有股票售價的基礎上進行核算的。計算機每天平均要對股票價格進行2800次左右的計算和更新,計算時會保留小數點后3位。
當時,溫哥華證券交易所的計算機軟件計算股票指數時,沒有將小數點后第四位進行四舍五入,而是直接舍去。
如股票指數540.32567,計算機會去掉小數點后第三位之后的數字,這樣,最終結果就變成了540.325。相反,如果四舍五入,股票指數就是540.326。
一次計算中,直接舍去和四舍五入,只產生0.001的差異。但這種差異,每天少則累積幾百次,多則幾千次。
這種差異不斷累積,終于導致股票指數開始下滑。
溫哥華證券交易所的股票指數,與小數點后第四位數字四舍五入的正常值相比,每天都會下滑1到2個百分點。22個月過去后,股票指數與剛開始相比,幾乎差了一半。
最終,溫哥華證券交易所承認,是計算機軟件計算股票指數時出現了問題。
他們公布了新的股票指數,并對之前22個月的交易記錄重新進行了核算。結果顯示,股票指數從524.81上升到了1098.892,幾乎多出一倍。
軟件bug(缺陷)并不大,它引發的后果卻十分駭人。
(摘自人民郵電出版社《致命Bug:軟件缺陷的災難與啟示》)