<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    新的起點(diǎn) 新的開始

    快樂生活 !

    銀行在線轉(zhuǎn)賬系統(tǒng)中竟然有這樣的Bug 而長(zhǎng)達(dá)4年沒有人發(fā)現(xiàn),看看大家能不能找出問題?一天過去了 沒有正解,今天說說正確答案

           最近忙于Fix Bug, 在某系統(tǒng)中發(fā)現(xiàn)一個(gè)Bug,而這個(gè)Bug竟然從2004年就存在!! 有這么一個(gè)Scenerio:
     周期性轉(zhuǎn)賬,計(jì)算需要轉(zhuǎn)賬次數(shù) eg: 200 每次20 那么 轉(zhuǎn)賬次數(shù)=10    239 每次轉(zhuǎn) 23.9 
    轉(zhuǎn)賬次數(shù)=10

    代碼1:

    float  sumTranferAmount;
    float  perTransferAmount;
    transactionCount = (int)Math.ceil((Math.round((sumTRanferAmount/perTransferAmount)*100.0/ 100.0))

    代碼2:

            float sumTranferAmount;
            
    float perTransferAmount;
            
    int transactionCount = (int)(sumTranferAmount / perTransferAmount);
            
    if ( (sumTranferAmount%  (perTransferAmount!= 0){
                transactionCount
    ++;
     
            }

    這兩段代碼那個(gè)正確呢? 大家不要測(cè)試,看能不能找出問題?

    其實(shí)這兩個(gè)代碼都是錯(cuò)誤的。
    代碼1不要說,錯(cuò)到十萬八千里了。對(duì)于代碼2,其實(shí)在取余運(yùn)算出現(xiàn)了問題。取余運(yùn)算前提是這兩個(gè)數(shù)不是小數(shù)(金額都是保留兩位小數(shù))。
    只要讓sumTranferAmount
    *100%pertransferAmount*100 就正確了。

    posted on 2009-04-10 15:01 advincenting 閱讀(2856) 評(píng)論(5)  編輯  收藏

    評(píng)論

    # re: 一個(gè)在線交易系統(tǒng)中竟然有這樣的Bug 而長(zhǎng)達(dá)4年沒有人發(fā)現(xiàn),看看大家能不能不測(cè)試找出問題? 2009-04-10 16:11 lveyo

    JAVA里好像處理金額的計(jì)算最好不要用float,double這樣的簡(jiǎn)單數(shù)據(jù)類型  回復(fù)  更多評(píng)論   

    # re: 一個(gè)在線交易系統(tǒng)中竟然有這樣的Bug 而長(zhǎng)達(dá)4年沒有人發(fā)現(xiàn),看看大家能不能不測(cè)試找出問題? 2009-04-10 16:13 advincenting

    其實(shí)這兩個(gè)都不對(duì) 呵呵!  回復(fù)  更多評(píng)論   

    # re: 銀行在線轉(zhuǎn)賬系統(tǒng)中竟然有這樣的Bug 而長(zhǎng)達(dá)4年沒有人發(fā)現(xiàn),看看大家能不能找出問題? 2009-04-10 23:30 MyYate

    呵呵,第一個(gè)肯定是錯(cuò)的,我看了一下,如果有239元,我每次轉(zhuǎn)238元,應(yīng)該需要轉(zhuǎn)兩次。
    第二個(gè)不清楚,不過如果我不考慮實(shí)際情況,每次轉(zhuǎn)238.999999元,transactionCount =1,所以也是錯(cuò)的。
    float,double計(jì)算就是這點(diǎn)不好。  回復(fù)  更多評(píng)論   

    # re: 銀行在線轉(zhuǎn)賬系統(tǒng)中竟然有這樣的Bug 而長(zhǎng)達(dá)4年沒有人發(fā)現(xiàn),看看大家能不能找出問題? 2009-04-12 11:01 程吉

    不是有可以解決不能精確計(jì)算的float和double類型的類么???
    不能用?  回復(fù)  更多評(píng)論   

    # re: 銀行在線轉(zhuǎn)賬系統(tǒng)中竟然有這樣的Bug 而長(zhǎng)達(dá)4年沒有人發(fā)現(xiàn),看看大家能不能找出問題?一天過去了 沒有正解,今天說說正確答案 2009-04-15 12:12 origo

    建議采用BigDecimal,或者用Double。在Float之間的除運(yùn)算會(huì)出現(xiàn)差錯(cuò),貌似會(huì)在.000級(jí)別出現(xiàn)誤差。  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    公告

    Locations of visitors to this pageBlogJava
  • 首頁(yè)
  • 新隨筆
  • 聯(lián)系
  • 聚合
  • 管理
  • <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    統(tǒng)計(jì)

    常用鏈接

    留言簿(13)

    隨筆分類(71)

    隨筆檔案(179)

    文章檔案(13)

    新聞分類

    IT人的英語(yǔ)學(xué)習(xí)網(wǎng)站

    JAVA站點(diǎn)

    優(yōu)秀個(gè)人博客鏈接

    官網(wǎng)學(xué)習(xí)站點(diǎn)

    生活工作站點(diǎn)

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 日韩免费高清视频| 亚洲日韩精品一区二区三区| av在线亚洲欧洲日产一区二区| 亚洲AV无码一区二区大桥未久| 成人黄动漫画免费网站视频 | 中文字幕无码免费久久99| 久久久久久a亚洲欧洲AV| 免费在线看黄网站| 久久精品国产亚洲av成人| 性xxxxx大片免费视频| 亚洲色大成网站www永久| 综合在线免费视频| 亚洲区视频在线观看| 亚洲综合伊人久久大杳蕉| 亚洲日韩精品A∨片无码加勒比| 久久精品a一国产成人免费网站| 亚洲成a人片毛片在线| 久久久久久国产a免费观看不卡| 久久久久亚洲av毛片大| 最近更新免费中文字幕大全| 亚洲精品中文字幕乱码三区| 久久免费国产视频| 亚洲三级在线观看| 四虎永久在线精品免费影视| g0g0人体全免费高清大胆视频| 亚洲AV永久青草无码精品| 久久久久国产精品免费网站| 亚洲伦理一二三四| 亚洲午夜激情视频| 免费无码一区二区三区| 亚洲av无码专区在线| 亚洲阿v天堂在线2017免费| 午夜爽爽爽男女免费观看影院| 亚洲另类自拍丝袜第1页| 免费a级毛片大学生免费观看| 伊人久久大香线蕉免费视频| 亚洲午夜电影在线观看高清| 亚洲AV无码成人精品区狼人影院| 美女视频黄a视频全免费网站色窝| 丁香花免费完整高清观看| 视频一区二区三区免费观看|