【C#】 Math.Round (128.5) = 128 ??

C# 中要四捨五入 第一個會想到 Math.Round

Math.Round (128.5) 因該要等於 129 。

但結果是128 ?! 這是Math.Round的Bug嗎XD

讓我們一起看下去…..

查了MSDN才發現… Math.Round MSDN

Math.Round 四捨五入有兩種方式

MidpointRounding.AwayFromZero 遠離零四捨五入
中間值會四捨五入到下一個數字背離零。 比方說,3.75 捨入至 3.8 3.85 四捨五入為 3.9,-3.75 捨入至-3.8,和-3.85 會捨入為-3.9。 這種形式的捨入由 列舉型別成員。

遠離零四捨五入為最廣泛的已知的表單的捨入。

MidpointRounding.ToEven 捨入至最接近值或五成雙
中間值會四捨五入至最接近的偶數。 比方說,3.75 和 3.85 捨入 3.8,並捨入到-3.8-3.75 和-3.85。 這種形式的捨入由列舉型別成員。

預設使用:MidpointRounding.ToEven

decimal m = 128.5m;
Console.WriteLine(Math.Round(m));  //128
Console.WriteLine(Math.Round(m,0, MidpointRounding.AwayFromZero)); //129

Math.Round(128.5) 使用預設:MidpointRounding.ToEven 四捨五入至最接近的偶數是128 結果就是128

Math.Round(128.5) 使用預設:MidpointRounding.AwayFromZero 四捨五入是129 結果就是129

小結:

所以真的要四捨五入 請使用 Math.Round(Num,0, MidpointRounding.AwayFromZero)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值