C#四捨五入問題

來源:互聯網
上載者:User

轉載自:http://dlix.bokee.com/5956750.html

C#,java,vbscript都是採用的四捨六入五成雙(下有解釋)
SQL server 使用的是四捨五入。

C#如 Math.Round(1.25,1) = 1.2。

SQL 中 select round(1.25,1) 返回的是1.3。

C#中實現四捨五入的參考代碼:

如2.45要四捨五入到小數後一位,可以先給2.45*10,然後加0.5,再取整,再除以10就OK了

  public double C1Round(double value, int digit)
  {
    double vt = Math.Pow(10, digit);
    double vx = value * vt;
   
    vx +=0.5;
    return (Math.Floor(vx) / vt);
  }   

四捨六入五成雙 

四捨六入五成雙是一種精確度的計數保留法.舍入規律是"四捨六入五成雙",這裡"四"是小於五的意思,"六"是大於五的意思,"五"是舍入位之後的尾數逢五的話看前一位,奇進偶不進,就像1.25,因為2是偶數,所以是1.2。又像1.35,因為3是奇數,所以是1.4,明不明白,這個是資料統計需要的.

        從統計學的角度,"四捨六入五成雙"比"四捨五入"要科學,它使舍入後的結果有的變大,有的變小,更平均.而不是像四捨五入那樣逢五就入,導致結果偏向大數.
例如:1.15+1.25+1.35+1.45=5.2,若按四捨五入取一位小數計算
1.2+1.3+1.4+1.5=5.4
按"四捨六入五成雙"計算,1.2+1.2+1.4+1.4=5.2,舍入後的結果更能反映實際結果

 

作者:冰碟
出處:http://www.cnblogs.com/icebutterfly/
著作權:本文著作權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文串連;否則必究法律責任

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.