c#_類型轉(zhuǎn)換

Math.Round這個(gè)函數(shù)的解釋是將值按指定的小數(shù)位數(shù)舍入,并不就是四舍五入。這種舍入有時(shí)稱為就近舍入或四舍六入五成雙

C# code
Math.Round(0.4)  //result:0 
Math.Round(0.6)  //result:1 
Math.Round(0.5)  //result:0 
Math.Round(1.5)  //result:2 
Math.Round(2.5)  //result:2 
Math.Round(3.5)  //result:4 
Math.Round(5.5)  //result:6 
Math.Round(6.5)  //result:6 
Math.Round(8.5)  //result:8 
Math.Round(9.5)  //result:10

可以看出 并不是四舍五入的
其實(shí)在 VB, VBScript, C#, J#, T-SQL 中 Round 函數(shù)都是采用 Banker's rounding(銀行家舍入)算法,即四舍六入五取偶。事實(shí)上這也是 IEEE 規(guī)定的舍入標(biāo)準(zhǔn)。因此所有符合 IEEE 標(biāo)準(zhǔn)的語言都應(yīng)該是采用這一算法的。

請(qǐng)調(diào)用 Math.Round(Decimal, MidpointRounding) 重載!~哦,原來還有重載的方法可用,MidpointRounding在兩個(gè)數(shù)字之間時(shí)如何舍入的規(guī)范,規(guī)范MidpointRounding中它有2個(gè)成員,一個(gè)是ToEven還有個(gè)是AwayFromZero。

C# code
//四舍五入  
Math.Round(0.5,MidpointRounding.AwayFromZero)

1. (int )double

2. convert.toInt32(object),object可能為string

3. int.parse(string)

Note:

Convert.ToInt32(null)會(huì)返回0而不會(huì)產(chǎn)生任何異常,但int.Parse(null)則 會(huì)產(chǎn)生異常。
Convert.ToInt32(double value),使用的上邊的銀行家舍入算法。
(int )double,直接是強(qiáng)制轉(zhuǎn)換(即截取整數(shù)部分)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • explicit與類型運(yùn)算符 背景 類類型轉(zhuǎn)換 類型轉(zhuǎn)換分類 隱式類型轉(zhuǎn)換/系統(tǒng)轉(zhuǎn)換 數(shù)值類型從低精度到高精度的轉(zhuǎn)...
    jdzhangxin閱讀 383評(píng)論 0 0
  • C++的類型轉(zhuǎn)換分為隱式轉(zhuǎn)換和顯式轉(zhuǎn)換 隱式轉(zhuǎn)換舉例: int i=4; double d=i;//隱式轉(zhuǎn)換 顯式...
    dengqiong閱讀 631評(píng)論 0 51
  • 這篇介紹C++的4種類型轉(zhuǎn)換 dynamic_cast, static_cast, reinterpret_cas...
    CodingCode閱讀 504評(píng)論 0 0
  • C++ 一共有4種類型轉(zhuǎn)換方式,分別是: static_cast,dynamic_cast,const_cast,...
    wayyyy閱讀 446評(píng)論 0 0
  • 最近在網(wǎng)上看到了一個(gè)C++類型轉(zhuǎn)換判斷的高效實(shí)現(xiàn),分享出來共同學(xué)習(xí)。作者使用了sizeof關(guān)鍵詞、函數(shù)重載與可變參...
    ColeWang閱讀 855評(píng)論 0 1