亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#中的浮點型轉整形的舍取 四舍五入和銀行家舍入實現代碼

2020-01-24 03:42:09
字體:
來源:轉載
供稿:網友
Double顯示轉換int
復制代碼 代碼如下:

static void Main(string[] args)
{
Console.WriteLine("5.1~{0}", (int)5.1d);
Console.WriteLine("5.5~{0}", (int)5.5d);
Console.WriteLine("5.8~{0}", (int)5.8d);
Console.WriteLine("2.1~{0}", (int)2.1d);
Console.WriteLine("2.5~{0}", (int)2.5d);
Console.WriteLine("2.8~{0}", (int)2.8d);
Console.WriteLine("-18.2~{0}", (int)-18.2f);
Console.WriteLine("-18.5~{0}", (int)-18.5f);
Console.WriteLine("-18.9~{0}", (int)-18.9f);
Console.Read();
}


這里可以看出浮點類型顯示轉換為整形是去除后面的小數,只取整數部分。
MSDN上是這樣解釋的:使用顯式轉換在 C# 中執行同一轉換時,小數點右邊的值將丟失。
這里嘗試了double和float類型,結果和上面一樣!
難道四舍五入錯了?Convert.ToInt32
復制代碼 代碼如下:

static void Main(string[] args)
{
Console.WriteLine("5.1~{0}", Convert.ToInt32(5.1d));
Console.WriteLine("5.5~{0}", Convert.ToInt32(5.5d));
Console.WriteLine("5.8~{0}", Convert.ToInt32(5.8d));
Console.WriteLine("2.1~{0}", Convert.ToInt32(2.1d));
Console.WriteLine("2.5~{0}", Convert.ToInt32(2.5d));
Console.WriteLine("2.8~{0}", Convert.ToInt32(2.8d));
Console.WriteLine("-18.2~{0}", Convert.ToInt32(-18.2f));
Console.WriteLine("-18.5~{0}", Convert.ToInt32(-18.5f));
Console.WriteLine("-18.9~{0}", Convert.ToInt32(-18.9f));
Console.Read();
}

從上面的結果發現,2.5,-18.5沒有遵守我們從小學習的四舍五入的法則!但是5.5卻正確的轉換成了6。5.1,2.8這些都是正常按照四
舍五入的法則。
銀行家舍入法

MSDN下Convert.ToInt32方法
public static int ToInt32(decimal value);
public static int ToInt32(double value);
public static int ToInt32(float value);
Msdn對這些方法的返回都特殊說明了:
舍入為最接近的 32 位有符號整數的 value。如果 value 為兩個整數中間的數字,則返回二者中的偶數;即 4.5 轉換為 4,而 5.5 轉換為 6。
查閱相關資料,得出這個舍入的規則叫銀行家舍入法:
銀行家舍入是IEEE規定的小數舍入標準之一,也是IEEE目前規定中最優秀的舍入方法,因此所有符合 IEEE 標準的語言都應該實現這種算法,.NET平臺也不例外。

其舍入法則是:
一個小數,當舍去位小于5,那么就舍去這位。

當舍去位等于5的時候,那么去看舍去位前面一位數的奇偶性,如果是奇數,那么就舍去5,然后舍去位前面一位加1,相反:如果是偶數,那么就舍去5,舍去位保留偶數性質不變。

當舍去位大于5的時候,那么舍去位不要,舍去位前面一位加1。

這個法則對負數也起相同作用!
例子:
4.3==4
4.5==4
5.5==6
6.5==6

NET中的銀行家舍入法實現
復制代碼 代碼如下:

public static int ToInt32(double value)
{
if (value >= 0.0)
{
if (value < 2147483647.5)
{
int num = (int)value;
double num2 = value - num;
if ((num2 > 0.5) || ((num2 == 0.5) && ((num & 1) != 0)))
{
num++;
}
return num;
}
}
else if (value >= -2147483648.5)
{
int num3 = (int)value;
double num4 = value - num3;
if ((num4 < -0.5) || ((num4 == -0.5) && ((num3 & 1) != 0)))
{
num3--;
}
return num3;
}
throw new OverflowException(Environment.GetResourceString("Overflow_Int32"));
}

查看上面的代碼,可以從幾個地方發現復合銀行家舍入法
復制代碼 代碼如下:

int num = (int)value;
double num2 = value - num;
if ((num2 > 0.5) || ((num2 == 0.5) && ((num & 1) != 0)))
{
num++;
}
return num;

分析可以發現,先是顯示把value去掉小數轉換成num,然后獲取value和num之間的小數差,再根據銀行家法則來舍去。
((num2 == 0.5) && ((num & 1) != 0))
如果舍去位等于0.5,而且通過位運算得到是否是奇數,如果2個條件都符合,那么就+1。否則返回num。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久一| 激情av一区二区| 亚洲va国产va天堂va久久| 九九九久久国产免费| 国产精品一区二区三区免费视频| 热久久免费国产视频| 一区二区三区四区在线观看视频| 91精品国产九九九久久久亚洲| 国产日韩在线观看av| 色偷偷偷亚洲综合网另类| 久久精品国产亚洲精品2020| 亚洲成人精品在线| 国产91精品久久久久| 日韩视频免费大全中文字幕| 欧美国产极速在线| 久久久久久久久久婷婷| 国产精品啪视频| 亚洲国产女人aaa毛片在线| 欧美日韩中文字幕综合视频| 亚洲欧美在线播放| 亚洲最大在线视频| 亚洲国模精品一区| 亚洲乱码一区av黑人高潮| 伊是香蕉大人久久| 亚洲变态欧美另类捆绑| 欧美日韩国产激情| 色青青草原桃花久久综合| 亚洲精品www久久久久久广东| 欧美成人在线网站| 欧美限制级电影在线观看| 亚洲最大成人免费视频| 成人啪啪免费看| 欧美电影在线观看| 国产玖玖精品视频| 亚洲国产精品999| 亚洲精品aⅴ中文字幕乱码| 久久天天躁夜夜躁狠狠躁2022| 亚洲欧美日韩一区二区在线| 亚洲国产91色在线| 国产婷婷成人久久av免费高清| 欧美在线免费看| 久久久久久欧美| 久久免费视频这里只有精品| 亚洲人成在线免费观看| 亚洲一区二区三区sesese| 美女性感视频久久久| 国产精品 欧美在线| 亚洲综合最新在线| 久久久久久久色| 久久久成人的性感天堂| 欧美激情视频一区二区三区不卡| 久久精品一偷一偷国产| 日韩av在线播放资源| 欧美日韩国产精品| 欧美激情在线观看| 国产成人在线亚洲欧美| 久久久久久久久久国产精品| 亚洲女性裸体视频| 亚洲精品一区av在线播放| 欧美成人午夜影院| 国产福利精品av综合导导航| 久久久久久久久久久久久久久久久久av| 中文字幕欧美在线| 亚洲一级片在线看| 国产成人精品在线观看| 亚洲国产成人精品一区二区| 91免费在线视频网站| 久久精品中文字幕| 久久综合久久88| 欧美一级大片在线观看| 亚洲欧美国产日韩中文字幕| 亚洲网在线观看| 欧美精品videos| 国产精品精品一区二区三区午夜版| 欧美一级淫片videoshd| 亚洲人成网站免费播放| 国产美女精品免费电影| 美女视频黄免费的亚洲男人天堂| 欧美日韩在线另类| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲成人久久网| 亚洲一品av免费观看| 91亚洲人电影| yw.139尤物在线精品视频| 欧洲亚洲女同hd| 日韩精品久久久久| 成人性生交大片免费看视频直播| 日韩精品免费一线在线观看| 欧美久久精品一级黑人c片| xxx欧美精品| 97超碰国产精品女人人人爽| 日韩av男人的天堂| 久久久久久久久久久av| 日韩免费观看高清| 亚洲精品视频在线播放| 国产欧美日韩精品专区| 久久91超碰青草是什么| 成人综合网网址| 97视频在线观看亚洲| 日韩少妇与小伙激情| 尤物精品国产第一福利三区| 57pao成人永久免费视频| 日韩免费黄色av| 精品久久久中文| 欧美国产亚洲视频| 国产成人精品在线视频| 色偷偷88888欧美精品久久久| 亚洲www在线| 亚洲国产又黄又爽女人高潮的| 在线播放国产一区二区三区| 97涩涩爰在线观看亚洲| 欧美日韩亚洲网| 国产精品视频区| 亚洲一区二区久久久久久久| 国内精品久久久久影院 日本资源| 欧美一级在线亚洲天堂| 久久国产精品影视| 亚洲欧美激情另类校园| 久久久精品一区二区三区| 欧美黑人又粗大| 在线播放亚洲激情| 91美女片黄在线观看游戏| 亚洲成人性视频| 久久精品色欧美aⅴ一区二区| 狠狠躁夜夜躁人人爽超碰91| 精品中文字幕久久久久久| 日韩在线观看视频免费| 亚洲级视频在线观看免费1级| 欧美成人精品h版在线观看| 好吊成人免视频| 精品国内自产拍在线观看| 亚洲精品自拍视频| 欧美在线激情网| 91亚洲va在线va天堂va国| 国产精品高清网站| 精品女同一区二区三区在线播放| 亲爱的老师9免费观看全集电视剧| 中文字幕精品www乱入免费视频| 一区二区三区四区在线观看视频| 最近2019年中文视频免费在线观看| 欲色天天网综合久久| 亚洲国产精品va| 国产精品高清在线观看| 欧美富婆性猛交| 91成人在线视频| 国产精品亚洲一区二区三区| 国产精品久久婷婷六月丁香| 亚洲网站在线看| 最好看的2019年中文视频| 国产日韩精品入口| 亚洲最大在线视频| 57pao国产成人免费| 97精品视频在线观看| 欧美精品在线免费观看| 一区二区欧美在线| 亚洲美女av在线| 欧美成人精品激情在线观看| 亚洲色图欧美制服丝袜另类第一页| 亚洲日本成人网| 91免费综合在线| 欧美极品美女电影一区| 国产一区二区三区视频| 色樱桃影院亚洲精品影院| 日本精品视频网站|