7種常見“小數(shù)處理”模型

0 評論 2755 瀏覽 2 收藏 9 分鐘

在交易范疇和支付范疇里面,我們常常會發(fā)現(xiàn)小數(shù)除不盡的情況。本文總結(jié)了7種常見“小數(shù)處理”模型,供大家在實際場景中選擇合適的模型。

在交易范疇和支付范疇經(jīng)常出現(xiàn)小數(shù)除不盡,或者乘數(shù)結(jié)果小數(shù)位數(shù)太多的情況,需要對小數(shù)進行處理因為,數(shù)據(jù)庫存儲小數(shù),往往會設(shè)定位數(shù)或者最小單位,例如保留兩位小數(shù),或者金額的最小單位為分,數(shù)值只能為整數(shù)。

常見的業(yè)務(wù)有以下這些:

  • 交易范疇的優(yōu)惠分?jǐn)偨痤~的小數(shù)處理
  • 支付范疇的多次分賬每次分賬金額的小數(shù)處理
  • 收款手續(xù)費處理
  • 多次退款的手續(xù)費處理
  • 利息的處理

一、除不盡的場景

分?jǐn)倳r,如一筆訂單優(yōu)惠10元,分?jǐn)偟?個商品上,那么每個商品分?jǐn)偠嗌?,很明顯10?3=3.333…是除不盡的,這時候最終每個商品分?jǐn)偭硕嗌賰?yōu)惠?分賬時,如一筆收款100塊,現(xiàn)在要平均分賬7筆,每筆應(yīng)該分多少錢,這里100?7=14.2857143…,那么如何執(zhí)行分賬?

二、相乘位數(shù)增加的場景

計算手續(xù)費時,例如手續(xù)費率0.38%,一筆收款568元,此時應(yīng)收手續(xù)費568*0.38%=2.158假如需要保留兩位小數(shù),那么最終手續(xù)費收多少呢?這里的規(guī)則需要跟商戶預(yù)先約定方法不重要,重要的是共識,沒有合不合理,只有愿不愿意。

大原則肯定是“公平”,何為公平就是“不多付一分錢,不少收一分錢,剛剛好”,而出現(xiàn)小數(shù)要處理也是迫不得已,那么也要盡可能保證公平,如果實在是做不到絕對公平,那么就做到各方共識,都能接受。

下面總結(jié)了7種常見的小數(shù)處理方法,以及適用的場景,全部以保留2位小數(shù)為前提。

1. 去尾法

保留位數(shù)后的值直接舍去,這個方法會讓數(shù)偏小可以用在“不能高于”的限制場景,比如多次分賬,不能超過總分賬金額,那么前面的分賬都可以直接去尾,最后進行調(diào)整示例:

568*0.38%=2.159,去尾以后為2.15像銀行給客戶的利息可以考慮去尾法,這樣整體來說,可以降低銀行的資金成本另外我們?nèi)粘YI東西也經(jīng)常用去尾法,比如買菜,一共2.53,你可能會說“老板,零頭別要了”,直接2.5就可以了。

2. 進一法

只要保留位數(shù)以后有數(shù)值,則直接進一,數(shù)會偏大可以在“不低于的“限制場景使用,比如你去給領(lǐng)導(dǎo)買可樂,一共8個領(lǐng)導(dǎo),每人一瓶;假如一箱共6瓶可樂,那么8?6=1.3333…,只能買2箱(不零賣)示例:568*0.38%=2.151,有數(shù)則進1,處理后結(jié)果為2.16

3. 四舍五入

這是最常見的處理方法,整體數(shù)值會偏大,小于5時舍去,大于等于5時進一像微信的交易收款手續(xù)費采用的就是“四舍五入法”示例:568*0.38%=2.158,8大于5直接進1,為2.16

4. 四舍六入五成雙

該方法比“四舍五入”更精確,當(dāng)數(shù)據(jù)量大時結(jié)果更接近真實數(shù)值因為1、2、3、4、5、6、7、8、9中,5正好在中間位置,如果四舍五入,很明顯進一的場景要比舍去的場景多“1”那么為了更公平就以5為分界線,小于5舍去,大于5進1,而當(dāng)?shù)扔?時分情況處理如果5后還有數(shù)則進1,例如2.12500009,因為5后還有數(shù),那么就進1,結(jié)果為2.13如果5后沒有數(shù)了,要看5前面的數(shù)是奇數(shù)還是偶數(shù),奇數(shù)時舍5進1,偶數(shù)時舍5不進(0為偶數(shù)),例如:2.175,5前面的“7”是奇數(shù),則舍5進1,結(jié)果為2.182.165,5前面的“6”是偶數(shù),則舍5不進,結(jié)果為2.16

5. 余數(shù)分配,補差法

當(dāng)除不盡時,對余數(shù)設(shè)定分配策略,先處理除盡的部分,最后補全差額,這樣的方法會讓個別有誤差,但整體沒有誤差例如開頭的分?jǐn)偫樱?/p>

一筆訂單優(yōu)惠10元,分?jǐn)偟?個商品上,那么每個商品分?jǐn)偠嗌?,很明顯10?3除不盡,整數(shù)結(jié)果是3,余數(shù)是1,那么2個商品分?jǐn)?,另一個分?jǐn)?如果保留2位小數(shù),則10?3=3.333333…,其中2個商品分?jǐn)?.33,最后一個商品分?jǐn)?0-3.33-3.33=3.34該方法可以用于優(yōu)惠分?jǐn)偤头仲~,包括退款手續(xù)費的處理,微信的退款手續(xù)費規(guī)則中有該方法余數(shù)分配方法可以與其他方法聯(lián)合使用,以確保最終的公平性例如微信多次退款時的手續(xù)費處理,前面按照“向下取整”的策略,而最后一次退款退回全部手續(xù)費,實際上就是對余數(shù)進行補齊的策略,雖然前面手續(xù)費少退了,但是最后全給你補上了

6. 向上取整

有數(shù)值則進1,這樣會讓數(shù)值偏大,但在最后一次進行調(diào)整,保證整體無誤差,如微信支付在規(guī)則調(diào)整前部分退款的手續(xù)費是“向上取整”,這樣就意味著多次退款時,前面返給商家的手續(xù)費偏高示例:2.12100009,向上取整則結(jié)果為2.13,看起來和進一法效果類似

7. 向下取整

與向上取整向反,直接舍去,跟去尾法相似目前微信支付多次退款的手續(xù)費退回處理策略是“向下取整”微信支付采用了多種小數(shù)處理策略,交易手續(xù)費采用“四舍五入”,多次退款時采用“向下取整+余數(shù)補齊”例如開頭的交易示例:手續(xù)費率0.38%,一筆收款568元,此時應(yīng)收手續(xù)費568*0.38%=2.158,“四舍五入”以后為2.16如果全額退款直接退2.16即可如果是部分時,退款手續(xù)費計算規(guī)則是:

退款手續(xù)費=退款金額/總金額*交易手續(xù)費

  • 假如第一次退款268元,則268/568*2.16=1.019=1.01(向下取整)
  • 第二次退款169元,則169/568*2.16=0.642=0.64(向下取整)
  • 第三次退131元,即退剩下的全部,則應(yīng)退手續(xù)費2.16-1.01-0.64=0.51(余數(shù)分配,調(diào)整差額)

最后,實際工作中可以根據(jù)實際業(yè)務(wù)情況靈活選擇和組合,或者設(shè)計出更優(yōu)的模型出來,例如“平常向下取整,年終一次性補齊整體差額”等,以確保盡可能的公平和大家都能接受的模型執(zhí)行。

專欄作家

陳天宇宙,微信公眾號:陳天宇宙,人人都是產(chǎn)品經(jīng)理專欄作家。多平臺支付領(lǐng)域?qū)谧髡?,十年資深產(chǎn)品;專注為10萬支付產(chǎn)品經(jīng)理和支付機構(gòu)以及企業(yè)提供深度支付內(nèi)容和服務(wù)!

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于 CC0 協(xié)議。

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!