Wednesday, January 06, 2010

誤差

早前幫同事去買刷膠,用我的會員卡有九折優惠。
一塊刷膠售 $2.5,九折後售價是多少?$2.25?你錯了,沒有豆零了,須四捨五入至最接近的 $0.1,即是 $2.3。
但我購買了6塊,付款前我作出如下計算 $2.5 * 6 * 0.9 = $13.5。
近乎不可能發生的時情竟然會發生,如此簡單的小學數,我竟然計錯了!收銀機顯示我應付 $13.8,我立時愣一愣。
隨即我意會到,原來收銀機盤數是這樣計算的:
$2.5 * 0.9 = $2.25
捨入至 $2.3
$2.3 * 6 = $13.8
立時,我有一種被搵笨的感覺!
為甚麼不是全單作九折再四捨五入 (下稱方法A),而是逐個項目先來九折,繼而四捨五入,最後才加總(下稱方法B)?
用方法A,全單的最大絕對誤差是 $0.05。
但用方法B呢?最大絕對誤差是無上限的。例如在以上我購買刷膠的例子中,全單的最大絕對誤差是$0.3!如果我購買600塊刷膠,最大絕對誤差便會是$30!
當然,無論用方法A還是方法B,捨入時採用四捨五入,而不是單單的上捨入或下捨入,那個誤差便會有可能是正數,亦有可能是負數。即是說顧客有機會被「搵笨」,也有機會拿「著數」。不過人就係咁犯賤,拿到「著數」可不會太上心呢,哈哈哈)))))))))))
對店舖來說,如果價錢的毫子位分佈平均,無論用方法A還是方法B,長遠來計這個誤差應該正負相抵,最終接近0。
那為甚麼要用方法B,而不用方法A呢?在我的角度,我覺得方法A實在直接得多!想了一會,會是以下原因嗎?
首先,價錢的毫子位,分佈實在不是平均!大多數店舖,價錢不是整數,如$13, $20, $100,便是五毫,如$2.5, $33.5。
這有甚麼問題?以九折來計,整數的取九折後,是不用再作捨入的。但五毫呢?必會是上捨入,例如
$2.5 * 0.9 = $2.25 ~~ $2.3
$33.5 * 0.9 = $30.15 ~~ $30.2
看到嗎?即是說顧客被「搵笨」了。
不從這個屎檜的角度想,會有其他原因嗎?
我猜測是方便電腦作記錄吧。
如果系統要記錄每件售出的貨品的售價,用方法B應該較簡單。
例如以$2.5的刷膠為例,系統只須記錄正價出售的 $2.5,以及九折出售的 $2.3。
但用方法A呢?便有正價的 $2.5,九折後有以下情況:
同一張單售出一件的話,折扣後每件售價是 $2.3。
同一張單售出兩件的話,折扣後是 $2.5 * 2 * 0.9 = $4.5,這個 $4.5 是顧客所付的,不用捨入,但電腦作記錄要記錄每件售出的金額的話,便是 $4.5/2 = $2.25
即是說同一件物品,會出現多於一個單位售價。
我對銷售系統沒有去研究,但從上例所見,採用方法A會有較多問題須作考慮。

*********************************************************************
想呀想,其實我還想過一件無聊事。如果物品售 $0.5,九折後是 $0.45,四捨五入後是 $0.5,那麼便沒有折扣嗎?
採用方法 B 的話,我就算買 100 件 $0.5 的貨品也不會享有九折優惠嗎?這可算一個極端例子呢,哈哈哈)))))))))))
可惜店舖內找不到價值 $0.5 的貨品,未能去驗證。

No comments: