C#使用Math.Round()四舍五入

C#使用Math.Round()四舍五入

1.使用重载函数Math.Round(值,精确位数)      ( 四舍六入五取偶)

如果不指定第三个参数,则等效为第三参数指定MidpointRounding.ToEven,即向最近的偶数四舍五入。

这个时候不是我们通常认为的四舍五入

2.使用重载函数Math.Round(值,精确位数,MidpointRounding.AwayFromZero

当第三个参数设置为MidpointRounding.AwayFromZero,从字面上看,是指向远离 0 的地方四舍五入

例:Response.Write(Math.Round(1.5,0, MidpointRounding.AwayFromZero).ToString());   返回值:2

经测试,个别小数使用2方法依然不能四舍五入,以526.925为例,使用方法2:

Math.Round(526.925,2, MidpointRounding.AwayFromZero)  返回值:526.92

围绕该小数进一步测试发现,百位数5,6,十分位4、9,百分位数字2、3,十位数字和个位数字任意,当取2位小数时会出现四舍五入失灵的情况。

此时,需要将double转化为decimal类型进行四舍五入

Math.Round((decimal)526.925,2, MidpointRounding.AwayFromZero)

综上,若要使用四舍五入取值,则尽量在double前面加decimal。可能为为double转decimal之后提高了精度

注:

1. decimal:属于精度高于double类型的浮点型(28个有效位)

2. double和float都是浮点型,存在精度损失,高精度计算数值时采用浮点型是很危险的,具体参考:https://www.cnblogs.com/lonelyxmas/p/3591132.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值