舍入誤差不僅引發(fā)了金融界的烏龍事件,還曾造成美軍重大傷亡。海灣戰(zhàn)爭期間,在沙特的愛國者導(dǎo)彈的計算機運行100個小時后,系統(tǒng)累積了0.3422秒的誤差,最終沒能攔截伊拉克發(fā)射的一枚導(dǎo)彈,造成28名美國陸軍士兵死亡。
銀行利息讓你賺了還是虧了?
舉一個例子,銀行給5個儲戶的利息分別是0、0.001、0.002、0.003、0.004,四舍五入后,銀行賺了。但是另外5個儲戶的利息是0.005、0.006、0.007、0.008、0.009,那么他們每人拿到的利息就是0.01,銀行虧了。
根據(jù)物理學(xué)家弗蘭克·本福德測算,0至9這10個數(shù)字出現(xiàn)的概率相同。那么每付出10筆利息,銀行的總收益就是:0+0.001+0.002+0.003+0.004-0.005-0.004-0.003-0.002-0.001=-0.005也就是說,四舍五入其實不利于銀行,而有利于儲戶。
為了減小誤差,有人設(shè)計出了“銀行家舍入法”。規(guī)則是這樣的:4及以下直接舍去;大于等于6時,進位后舍去;如果5后面還有數(shù)字,則進位后舍去;如果5后面沒有數(shù)字了,那么如果5前面是奇數(shù),則進1,若5前面是偶數(shù)直接舍去5。當(dāng)然,“銀行家舍入法”也不是完全沒有誤差。
我國金融系統(tǒng)的大部分算法是用四舍五入。國際上,歐盟委員會對換匯時的舍入規(guī)定也是四舍五入。真正廣泛采用“銀行家舍入法”的是需要更小誤差的科學(xué)和計算機系統(tǒng),現(xiàn)在大部分編程軟件的默認設(shè)置都是“銀行家舍入法”。
曾造成美軍重大傷亡
歷史上,舍入誤差曾引發(fā)了烏龍事件。1982年,加拿大推出了溫哥華證券交易所指數(shù)VSEI。VSEI是1500家上市公司的指數(shù)合成所得,用來衡量股市的整體走勢。
VSEI的初始值是1000點。但是1983年11月,VSEI跌到了524.811點,但構(gòu)成VSEI的幾個股票本身并沒有跌很多。原來,VSEI的計算由計算機程序自動處理,計算到小數(shù)點后第4位,但是報告中最后一位被四舍五入去掉了。因此,每次計算,VSEI就出現(xiàn)了一個很小的誤差。而等到1983年11月,這個誤差已經(jīng)肉眼可見了。
舍入誤差還曾造成美軍重大傷亡。海灣戰(zhàn)爭期間,在沙特的愛國者導(dǎo)彈的計算機運行100個小時后,系統(tǒng)累積了0.3422秒的誤差,最終沒能攔截伊拉克發(fā)射的一枚飛毛腿導(dǎo)彈,造成28名美國陸軍士兵死亡。
有人利用誤差賺錢
日常金融操作的最小單位是分,在匯率換算的時候也是如此,有人曾利用這個誤差賺錢。舉一個例子:0.01日元換成美元是0.000093美元,銀行不可能把你的錢換沒了,所以只能給你0.01美元,如果循環(huán)多次交易,就能利用誤差套利。
2013年,羅馬尼亞計算機安全學(xué)家阿德里安設(shè)計了一款自動賺錢機器,在歐元換算成羅馬尼亞的貨幣的過程中,利用四舍五入來套利。如果全速運轉(zhuǎn),這臺機器每天能通過數(shù)千次小額交易賺到70歐元。
銀行把這種套利行為取名為“邏輯攻擊”。當(dāng)然,銀行也有應(yīng)對措施,比如收取交易費、設(shè)定最小換匯數(shù)額,或者限制每日換匯次數(shù)等?!斑壿嫻簟币策m用于稅務(wù)系統(tǒng),如一家公司可以利用多次四舍五入而少交稅。為了避免有人利用這個漏洞,美國國家稅務(wù)局就設(shè)定了相應(yīng)的規(guī)定,使公司在報稅時沒有漏洞可鉆。
(新華網(wǎng)等)