產(chǎn)品設(shè)計中,小數(shù)處理有哪些細節(jié)?
設(shè)計產(chǎn)品中會遇到很多類型的數(shù)據(jù),當(dāng)數(shù)據(jù)類型為小數(shù)時,就需要對小數(shù)進行處理,但是我們很容易忽略對小數(shù)的思考,想當(dāng)然的采取了四舍五入并保留兩位小數(shù)的做法,本文想和大家仔細探討處理小數(shù)時的細節(jié)。
一、是否需要保留小數(shù)
先來看下我們遇到的兩個數(shù)字:第一個小數(shù)是對于某商品的定價4.5,第二個小數(shù)是對于需要載具的確定;當(dāng)前有18斤米,每個袋子可以運走4斤米,需要的袋子是18 / 4 = 4.5,同時都得到了4.5這個帶小數(shù)的數(shù)據(jù)。
根據(jù)生活常識很輕松就可以判斷:商品定價4.5需要保留,而袋子4.5需要去掉小數(shù)——因為0.5的金額是有金融意義的,而0.5的袋子是不存在的。
通過這兩個數(shù)字,我們能夠發(fā)現(xiàn):當(dāng)我們遇到帶小數(shù)的數(shù)據(jù)時,首先需要判斷的是,這個小數(shù)部分是否需要被保留。
那么,什么情況下小數(shù)需要被保留呢?
- 小數(shù)部分具有業(yè)務(wù)價值,是現(xiàn)實情況在數(shù)據(jù)層面的一個反饋。通俗的講就是這個小數(shù)部分的價值可以很明確的被人感知道,是約定俗成的,5元中的0.5就代表了現(xiàn)實生活中的5角錢,5.27米的0.27就代表了0.27米或者27厘米的長度。
- 小數(shù)部分具有數(shù)據(jù)分析價值,可以擴充數(shù)據(jù)分析的顆粒度,幫助我們觀察更細致的數(shù)據(jù)變動。兩種價值可以同時在一個數(shù)據(jù)中存在。
金融證券交易市場中,曾有過以整數(shù)作為計價法則的做法,這種做法沒有錯誤的,但是對于股票的價格只能從整數(shù)級別去觀察,1元掛單后就是2元,反映不出股票價格的細微波動。
更嚴(yán)重的是:當(dāng)交易雙方有一方愿意出的價格大于1元但是小于2元時,會放棄去掛單,難以成交,即使成交也有一方內(nèi)心不滿。
而引入小數(shù)計價法后,買賣掛單可以是1.60,1.61,1.62等,能更細致的反映金融市場的波動,也促使了交易市場更加活躍,這就是小數(shù)部分具有數(shù)據(jù)分析價值的實際運用。
二、確定需要保留的位數(shù)
再來看一個數(shù)字:
該數(shù)字是對于用戶預(yù)期收益的展示,通過用戶輸入的本金,所選擇的年化利率和投資周期,我們得到預(yù)期收益是2527.122794元。
根據(jù)上文的分析,我們可以得知:該數(shù)據(jù)的小數(shù)部分是用戶金錢的反映,具有金融價值需要被保留,但是保留全部小數(shù)會導(dǎo)致頁面無法放下或者頁面縮放時無法兼容——這就需要我們保留部分小數(shù)。
這里同樣考慮到人民幣的最小單位是分,該數(shù)據(jù)保留兩位小數(shù)即可確定需要保留小數(shù)后,就需要思考第二個細節(jié)“需要保留的位數(shù)”。
那么,我們?nèi)绾未_定需要保留的位數(shù)?
- 當(dāng)遇到小數(shù)位數(shù)太長的情況時,因為并不是每個小數(shù)都具有業(yè)務(wù)價值的,可以通過業(yè)務(wù)價值來確定需要保留的位數(shù),人民幣的最小單位時分,涉及到金額相關(guān)的數(shù)據(jù),超過兩位小數(shù)的部分就沒有業(yè)務(wù)價值,就可以保留兩位小數(shù)。這是通過小數(shù)部分的業(yè)務(wù)價值來確定需要保留的位數(shù)
- 我們也能從足夠觀察出差異的數(shù)據(jù)角度確定需要保留的位數(shù),這是通過小數(shù)部分的數(shù)據(jù)及價值來確定需要保留的位數(shù)
現(xiàn)在我們要計算得到某商品連續(xù)2日的銷售額占比,分別為0.851223,0.856745,因為我們希望通過銷售額占比分析商品連續(xù)2日的差異,可以發(fā)現(xiàn)從第三位小數(shù)就足夠支持我們分析兩者的差異,銷售額占比保留3位小數(shù)即可,這就是通過數(shù)據(jù)價值來確定小數(shù)部分需要保留的位數(shù)
到這里,我們就能發(fā)現(xiàn):保留位數(shù)并不是一個絕對的,是需要根據(jù)實際的業(yè)務(wù)情況或者所需要的數(shù)據(jù)價值來確定的。
三、選擇取數(shù)進位的策略
確定需要保留的位數(shù)后,我們就需要思考第三個細節(jié)“選擇怎么樣的取數(shù)進位策略”。
我們怎么來選擇呢?可以通過場景需要來選擇:
1. 去尾法
依舊是預(yù)期收益這個數(shù)字2527.122794,確定保留兩位小數(shù)后,需要對舍棄部分小數(shù)進行處理,因為預(yù)期收益是金融數(shù)據(jù),在金融領(lǐng)域我們會要求處理后的數(shù)據(jù)不超過原數(shù)據(jù),否則銀行或者金融公司需要承擔(dān)多出部分的價值,所以這里需要對數(shù)據(jù)進行去尾法處理,得到處理后的數(shù)據(jù)為2527.12。
通過上面的數(shù)字,我們能夠了解到:當(dāng)我們所遇到的場景帶有不超過的約束條件時,就需要我們在去掉多余部分的數(shù)據(jù)時,直接保留最后一位數(shù)字。
這樣做的目的是:保證處理后的數(shù)據(jù)比原數(shù)據(jù)小,從而不會造成數(shù)據(jù)溢出的情況。
2. 進一法
一起來看這個數(shù)字:
現(xiàn)在有45個同學(xué)參加活動,每個同學(xué)需要發(fā)放1瓶水,1箱24瓶水,需要幾箱水?
45 / 24 = 1.875
因為買1箱水的話有21個同學(xué)喝不到水,為了保證每個同學(xué)都能喝到水,需要對數(shù)據(jù)進行進一法處理,得到處理后的數(shù)據(jù)為2。
通過上面的數(shù)字,我們能夠了解到:當(dāng)我們所遇到的場景帶有不少于的約束條件時,就需要我們在去掉多余部分的數(shù)據(jù)時,在保留部分的最后一位數(shù)字加1,保證處理后的數(shù)據(jù)比原數(shù)據(jù)大,從而不會造成數(shù)據(jù)無法滿足或覆蓋的情況。
如果我們面對場景不帶有上述兩種方法不少于或者不超過的約束條件時,就可以選擇我們最通用的方法四舍五入,使的被保留后的數(shù)據(jù)與實際值差值不超過最后一位數(shù)量級的二分之一,追求數(shù)據(jù)角度的最小誤差。
四、總結(jié)
在設(shè)計產(chǎn)品中,小數(shù)的出現(xiàn)非常常見,但是很容易被我們忽略;實際上,簡單的一個小數(shù)也可以分3個步驟去分析,“是不是要保留”,“要保留幾位小數(shù)”,“保留后采取什么樣的取數(shù)進位策略”。
仔細考慮每個環(huán)節(jié)的細節(jié),選擇合適的位數(shù)和取數(shù)策略,能幫助我們通過小數(shù)準(zhǔn)確表達業(yè)務(wù)場景,反映真實的情況。
相反,不合適的方案,會帶來數(shù)據(jù)歧義,引起誤導(dǎo),甚至產(chǎn)生嚴(yán)重后果。
作者:晌午,微信公眾號:晌午自習(xí)室
本文由 @晌午 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議
皮毛 你去搞搞ERP 含稅價 未稅價的小數(shù)點問題能弄哭你
老哥有類似的文章嗎?
老哥有類似的文章嗎?