四舍五入不可让徘!結算金額近顷,如何保證精確生音?

今天在 SegmentFault 看到了類似問題宁否,查資料回答那個問題后窒升,決定留個筆記。

我們在計算金額時慕匠,難免存在保留位數(shù)有限饱须,計算結果需要取舍的情況。往往在電商台谊、銀行系統(tǒng)中蓉媳,金額是以整數(shù)形式保存,單位為貨幣最小單位锅铅,例如分酪呻。但是在結算時額外的參數(shù)如折扣、利率盐须、稅率等存在著大量的浮點數(shù)玩荠,計算結果則需要轉換為整數(shù)。

簡單處理一般是四舍五入贼邓,但是這樣存在很明顯的問題阶冈,就是 “入” 的概率大于 “舍”,明顯的塑径,遇到 1女坑、2、3统舀、4 舍匆骗,遇到 5、6誉简、7绰筛、8、9 入描融,粗看這種就可以發(fā)現(xiàn)問題铝噩。如果想要兩邊平衡,則 “四舍六入” 才是合理的,但是骏庸,5 怎么辦毛甲?

有趣的推理

轉自知乎用戶給出的一個例子(原知乎答案地址:https://www.zhihu.com/question/28943072/answer/42673180

某實數(shù) r = 0.4445。也就是說具被,比九分之四稍微大一點點玻募。(構造其他小數(shù)也可以,有限小數(shù)還是無限小數(shù)一姿、純小數(shù)還是帶小數(shù)都沒關系)

好了七咧,根據(jù)四舍五入算法 f,直接把這個 r 保留到整數(shù)叮叹。那么艾栋,明顯,結果是 0蛉顽,小數(shù)點后第一位是 4 么蝗砾。

這時,請開放一下腦洞携冤。有一群科學家拿到了這個數(shù)字悼粮。然后……

科學家 s3 把 r 保留到小數(shù)點后第 3 位,得 r3 = 0.445曾棕。第 4 位是 5 么扣猫,按四舍五入的精神,把這個 1 進到第 3 位翘地,使之變成 5申尤。

科學家 s2 把 r 保留到小數(shù)點后第 2 位,得 r3 = 0.45子眶。第 3 位是 5 么瀑凝,按四舍五入的精神,把這個 1 進到第 2 位臭杰,使之變成 5粤咪。

科學家 s1 把 r 保留到小數(shù)點后第 1 位,得 r1 = 0.5渴杆。第 2 位是 5 么寥枝,按四舍五入的精神,把這個 1 進到第 1 位磁奖,使之變成 5囊拜。

科學家 s0 把 r 保留到小數(shù)點后第 0 位,得 r0 = 1比搭。第 1 位是 5 么冠跷,按四舍五入的精神,把這個 1 進到第 0 位,使之變成 1蜜托。

最終結果和 0.4445 直接四舍五入結果存在明顯差異抄囚。

還有個例子也能說明:

2.55 + 3.45 = 6

如果我們把 2.55 和 3.45 四舍五入保留一位小數(shù),那么上述式子就成了:

2.6 + 3.5 = 6.1

這樣的問題非常常見橄务,也導致了在大量樣本中幔托,四舍五入后計算結果的總和會明顯大于直接計算總和的結果,對于金融單位計算利息而言蜂挪,這樣很顯然是一個虧本的行為重挑。如果不虧本的算,依舊是簡單處理可能結果相反棠涮,那么客戶就不開心了谬哀。

銀行家舍入(Banker's Round)

亦叫做 “四舍六入五成雙” ,四舍六入故爵,使得兩頭(即進和舍)概率相等玻粪,但是隅津,在 4 和 6 之間的 5 就需要特別對待诬垂。具體規(guī)則如下:

舍去位的數(shù)值小于5時,直接舍去伦仍;

舍去位的數(shù)值大于等于6時结窘,進位后舍去;

當舍去位的數(shù)值等于5時充蓝,分兩種情況:5后面還有其他數(shù)字(非0)隧枫,則進位后舍去;若5后面是0(即5是最后一位)谓苟,則根據(jù)5前一位數(shù)的奇偶性來判斷是否需要進位官脓,奇數(shù)進位,偶數(shù)舍去涝焙。

舍去位卑笨,當小于 5,即 0 ~ 4.999999…… 則舍去仑撞,大于 6赤兴,即 6 ~ 10 則進位,則中間區(qū)間那個數(shù)字隧哮,5 ~ 5.999999…… 桶良,只要使該區(qū)間內存在的數(shù)字平均分布,即可保證取舍概率相等沮翔。于是得到上述算法陨帆。

按上述規(guī)則,之前的 2.55 + 3.45 = 6 得出的結果如下:

2.6 + 3.4 = 6

結果正確。

轉載 :https://www.insp.top/article/how-to-ensure-accurate-for-digital-transformation

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末疲牵,一起剝皮案震驚了整個濱河市岸浑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瑰步,老刑警劉巖矢洲,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缩焦,居然都是意外死亡读虏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門袁滥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盖桥,“玉大人,你說我怎么就攤上這事题翻】玻” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵嵌赠,是天一觀的道長塑荒。 經(jīng)常有香客問我,道長姜挺,這世上最難降的妖魔是什么齿税? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮炊豪,結果婚禮上凌箕,老公的妹妹穿的比我還像新娘。我一直安慰自己词渤,他們只是感情好牵舱,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缺虐,像睡著了一般芜壁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上志笼,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天沿盅,我揣著相機與錄音,去河邊找鬼纫溃。 笑死腰涧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的紊浩。 我是一名探鬼主播窖铡,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼疗锐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了费彼?” 一聲冷哼從身側響起滑臊,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箍铲,沒想到半個月后雇卷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡颠猴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年关划,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翘瓮。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡贮折,死狀恐怖,靈堂內的尸體忽然破棺而出资盅,到底是詐尸還是另有隱情调榄,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布呵扛,位于F島的核電站每庆,受9級特大地震影響,放射性物質發(fā)生泄漏择份。R本人自食惡果不足惜扣孟,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一烫堤、第九天 我趴在偏房一處隱蔽的房頂上張望荣赶。 院中可真熱鬧,春花似錦鸽斟、人聲如沸拔创。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剩燥。三九已至,卻和暖如春立倍,著一層夾襖步出監(jiān)牢的瞬間灭红,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工口注, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留变擒,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓寝志,卻偏偏與公主長得像娇斑,于是被迫代替她去往敵國和親策添。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容