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

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

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

    Decode360's Blog

    業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    關于“四舍五入”
    ?
    ?
    ??? 最近在使用Cognos做前臺Report的時候,業務部門反映了一個問題,就是有幾處的四舍五入出現了錯誤。在查看了Report之后發現確實如此,檢查了所有環節都覺得不太會有設置不對的地方,到網上查了查資料,無意中發現原來四舍五入不止我們小學時交的那一種,還有一種是“四舍六入五成雙”的方法,根據這個規則又回去看數據,果然對應的是這個方法。
    ?
    ??? 從理論上講,“四舍六入五成雙”是比“四舍五入”更加精確的進位方式,慚愧的是對于這種方法真是聞所未聞。而且不單是我,問了所有的同事和朋友,幾乎都不知道有這樣的一個方法,看來應該不是我忘記掉了,而是學校里確實沒有教。簡單講講這個方法,其實也很簡單:
    ?
    --------------------------
    ?
    四舍六入五留雙規則
    ?

    ??? 為了避免四舍五入規則造成的結果偏高,誤差偏大的現象出現,一般采用四舍六入五留雙規則(Banker's Rounding)。 四舍六入五留雙應該改為: 四舍六入逢五無后則留雙,這樣描述更容易理解和記住.

    四舍六入五留雙規則的具體方法是:
    ?
    ()當尾數小于或等于4時,直接將尾數舍去。
    ?
    ??? 例如將下列數字全部修約為四位有效數字,結果為:
    ??? 0.53664——0.5366
    ??? 10.2731——10.27
    ??? 18.5049——18.50?
    ??? 0.58344——0.5834
    ??? 16.4005——16.40
    ??? 27.1829——27.18?
    ?
    ()當尾數大于或等于6時,將尾數舍去并向前一位進位。
    ?
    ??? 例如將下列數字全部修約為四位有效數字,結果為:
    ??? 0.53666——0.5367
    ??? 8.3176——8.318
    ??? 16.7777——16.78
    ??? 0.58387——0.5839
    ??? 10.29501——10.30
    ??? 21.0191——21.02
    ?
    ()當尾數為5,而尾數后面的數字均為0時,應看尾數“5”的前一位:若前一位數字此時為奇數,就應向前進一位;若前一位數字此時為偶數,則應將尾數舍去。數字“0”在此時應被視為偶數。

    ??? 例如將下列數字全部修約為四位有效數字,結果為:
    ??? 0.153050——0.1530
    ??? 12.6450——12.64
    ??? 18.2750——18.28?
    ??? 0.153750——0.1538
    ??? 12.7350——12.74
    ??? 21.845000——21.84?
    ?
    ()當尾數為5,而尾數“5”的后面還有任何不是0的數字時,無論前一位在此時為奇數還是偶數,也無論“5”后面不為0的數字在哪一位上,都應向前進一位。
    ?
    ??? 例如將下列數字全部修約為四位有效數字,結果為:
    ??? 0.326552——0.3266
    ??? 12.73507——12.74
    ??? 21.84502——21.85
    ??? 12.64501——12.65
    ??? 18.27509——18.28
    ??? 38.305000001——38.31
    ?
    ??? 按照四舍六入五留雙規則進行數字修約時,也應像四舍五入規則那樣,一次性修約到指定的位數,不可以進行數次修約,否則得到的結果也有可能是錯誤的。例如將數字10.2749945001修約為四位有效數字時,應一步到位:10.2749945001——10.27(正確)。如果按照四舍六入五留雙規則分步修約將得到錯誤結果:10.2749945001——10.274995——10.275——10.28(錯誤)
    ?
    --------------------------
    ?
    ??? 在發現了這個問題之后,我找了很多地方進行測試,發現我們平常接觸到得軟件都是使用普通的四舍五入法,例如Excel、Oracle等等,都是用的普通的四舍五入來保留N位小數。不過再研究Oracle進位的時候倒是發現了一個問題:Oracle的默認自動轉換也是四舍五入的,而不是直接截斷,這跟普通的編程軟件是不一樣的。
    ?
    SQL> set serveroutput on
    SQL>
    SQL> declare
    ? 2??? a number := 7.8;
    ? 3??? i integer;
    ? 4? begin
    ? 5??? i := a;
    ? 6??? dbms_output.put_line(i);
    ? 7? end;
    ? 8? /
    ?
    8
    ?
    PL/SQL procedure successfully completed
    ?
    ??? 記錄一下。
    ?
    ?
    posted on 2009-05-31 22:11 decode360 閱讀(800) 評論(0)  編輯  收藏 所屬分類: 16.Others
    主站蜘蛛池模板: 国产成人久久精品亚洲小说| 久久国产乱子免费精品| 中文亚洲AV片不卡在线观看| 日韩电影免费在线观看中文字幕| 亚洲日产2021三区在线| 国产一精品一aⅴ一免费| 黄网站免费在线观看| 亚洲精品无码少妇30P| 亚洲人成网站在线播放vr| 在线a级毛片免费视频| 国产精品永久免费视频| 亚洲人妖女同在线播放| 国产aⅴ无码专区亚洲av麻豆| 成人免费黄色网址| 国产黄在线观看免费观看不卡| 亚洲国产午夜电影在线入口| 亚洲性日韩精品一区二区三区| 114一级毛片免费| 老司机精品免费视频| 亚洲夂夂婷婷色拍WW47| 亚洲av无码成h人动漫无遮挡 | 亚洲国产成人片在线观看无码 | 亚洲AV无码专区电影在线观看| 好男人视频社区精品免费| 一个人看的www免费视频在线观看| 亚洲综合一区二区三区四区五区 | 日韩亚洲人成在线| 亚洲国产精品线在线观看| 亚洲伊人久久综合中文成人网| 成年女人毛片免费视频| 91香蕉在线观看免费高清| fc2成年免费共享视频网站| 亚洲爆乳成av人在线视菜奈实| 久久精品亚洲一区二区三区浴池| 亚洲中文字幕丝袜制服一区| 日韩a级毛片免费观看| 国产曰批免费视频播放免费s| 青青草原1769久久免费播放| 国产免费伦精品一区二区三区| 国产成人亚洲精品无码AV大片| 亚洲人成免费电影|