欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

四舍五入VS銀行家舍入

系統 1675 0

相信細心的程序員們早就發現了 .net 環境下默認舍入算法的是“四舍六入”的算法。從小學我們就學過“四舍五入”算法,但是更加科學的舍入辦法應該是“四舍六入”,也就是今天我們要討論的“ 銀行家舍入 ”。

大家可以做一個 Demo

C# 環境下

        
             1:  
        
        
          class
        
         Program
      
        
             2:  
        
            {
      
        
             3:  
        
        
          static
        
        
          void
        
         Main(
        
          string
        
        [] args)
      
        
             4:  
        
                { 
      
        
             5:  
        
        
          do
        
      
        
             6:  
        
                   {
      
        
             7:  
        
                        Console.WriteLine(
        
          "請輸入一個小數回車測試,輸入其他回車結束測試"
        
        );
      
        
             8:  
        
        
          string
        
         Num = Console.ReadLine();
      
        
             9:  
        
        
          try
        
      
        
            10:  
        
                        {
      
        
            11:  
        
                            Console.WriteLine(
        
          "結果為"
        
         + Convert.ToInt16(Convert.ToDouble(Num)));
      
        
            12:  
        
                        }
      
        
            13:  
        
        
          catch
        
         (Exception e) {
      
        
            14:  
        
        
          break
        
        ;
      
        
            15:  
        
                        } 
      
        
            16:  
        
                   }
      
        
            17:  
        
        
          while
        
         (
        
          true
        
         );
      
        
            18:  
        
                }
      
        
            19:  
        
            }
      

得到的結果如下

<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>

image

VB.net 環境下測試代碼為

        
             1:  
        
            Sub Main()
      
        
             2:  
        
                Do
      
        
             3:  
        
                    Console.WriteLine(
        
          "請輸入一個小數回車測試,輸入其他回車結束測試。"
        
        )
      
        
             4:  
        
                    Try
      
        
             5:  
        
                        Dim a As String = Console.ReadLine()
      
        
             6:  
        
                        Console.WriteLine(
        
          "結果為:"
        
         & CInt(Convert.ToDouble(a)))
      
        
             7:  
        
                    Catch ex As Exception
      
        
             8:  
        
                        Exit Sub
      
        
             9:  
        
                    End Try
      
        
            10:  
        
                Loop
      
        
            11:  
        
            End Sub
      

結果如下

image

完全符合銀行家舍入的規律:四舍六入五考慮,五后非零就進一,五后為零看奇偶,五前為偶應舍去,五前為奇要進一

關于 VB.net 中的 CInt 微軟的 MSDN 上有具體說明

Fractional Parts. When you convert a nonintegral value to an integral type, the integer conversion functions ( CByte , CInt , CLng , CSByte , CShort , CUInt , CULng , and CUShort ) remove the fractional part and round the value to the closest integer.

If the fractional part is exactly 0.5, the integer conversion functions round it to the nearest even integer. For example, 0.5 rounds to 0, and 1.5 and 2.5 both round to 2. This is sometimes called banker's rounding , and its purpose is to compensate for a bias that could accumulate when adding many such numbers together.

相對于四舍五入,銀行家舍入的確更加的準確,討論如下:

有些童鞋可能認為在一般性的測量中,最后一位小數位上 0 9 出現的概率是相等的。一共十個數字, 0 4 可以舍去(四舍), 5 9 可以進位(五入),多么完美的舍入算法!

但是!您可能忽略了一點,末尾的 0 在這里是相當于 10 還是相當于 0

為了避免混沌,請看下圖:

<style type="text/css"> <!-- .csharpcode, .csharpcode pre {font-size:small; color:black; font-family:consolas,"Courier New",courier,monospace; background-color:#ffffff} .csharpcode pre {margin:0em} .csharpcode .rem {color:#008000} .csharpcode .kwrd {color:#0000ff} .csharpcode .str {color:#006080} .csharpcode .op {color:#0000c0} .csharpcode .preproc {color:#cc6633} .csharpcode .asp {background-color:#ffff00} .csharpcode .html {color:#800000} .csharpcode .attr {color:#ff0000} .csharpcode .alt {background-color:#f4f4f4; width:100%; margin:0em} .csharpcode .lnum {color:#606060} --> </style>

image

圖中是用 Matlab 畫的一個簡單的數軸,可以看出 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.0 1.0 都是 0 結尾所以不能確定測量數據中的 0 是哪個零!

還是看上圖,圖中只要不滿 0.5 都按照 0 算,大于 0.5 都按照 1.0 算,那么剩下的 0.5 怎么辦?為了體現平均性,看上一位是奇數還是偶數,如果是奇數則進位,如果是偶數則舍去。這正是“銀行家舍入”的思想。這樣一來便達到了相對于“四舍五入”舍入方法更加平衡的舍入算法。

PS :“銀行家舍入”是 IEEE 規定的舍入標準。因此所有符合 IEEE 標準 的語言都是采用這一算法的。

四舍五入VS銀行家舍入


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 少妇的肉体的满足毛片 | 亚洲欧美日韩三级 | 久久伊人色综合 | 精品一卡2卡三卡4卡乱码免费 | 精品自拍视频 | 欧美黑人性暴力猛交免费看 | 日本一区二区三区精品国产 | 久久久无码精品成人A片小说 | 免费小视频 | 99热在这里只有精品 | 久久九九综合 | 国产精品xxxav免费视频 | 91中文字幕在线观看 | 91精品国产欧美一区二区 | 精品国产综合 | 国产精品一码二码三码在线 | 九九热在线免费视频 | 国产成人最新毛片基地 | 2021国产精品自拍 | 亚洲欧美色国产综合 | 亚洲欧洲精品一区二区 | 国产一级一级一级成人毛片 | 在线一级片| 三上悠亚2022最新番号 | 天天操夜操 | 久草视频在线首页 | 亚洲精品一区二区三区福利 | 狠狠色丁香婷婷综合久久来 | 成人性生交A片免费看麻豆 色倩网站 | 天天干夜夜笙歌 | 人人爱免费在线观看 | 免费观看成人毛片A片2008 | 国产男女在线观看 | 中文字幕av在线播放 | 欧美亚洲国产一区 | 久久精品一区二区三区不卡牛牛 | 91视频导航 | 无码日本精品久久久久久 | 女人a级毛片19毛水真多 | 国产精品久久久久久久久久久久冷 | 欧美综合一区二区 |