.net 四舍六入 五成双

.net 四舍五入, 别看这 这小小的问题竟引发了我一系列的悲剧,你别笑 你也不一定知道.net 的四舍五入

 

 网站更新了一些东西之后 第二天发现几千笔订单居然完不了单,这就郁闷了, 一查发现都是冻结的时候给多冻结了一分钱, 结果完单的时候发现支付的少一分钱 所以完不了单!

 这一切的一切都是微软的四六五入  ,哈哈。 平常写代码不细心。

decimal d = 2.105M;
Response.Write(Decimal.Round(d,2));

看下   别以为这是输出 2.11, 微软里面使用的是更加精确的 “四舍六入五成双” 科学计算法  输出的是2.10

果需要四舍五入只能设置第三个参数 MidpointRounding.AwayFromZero

Response.Write(Decimal.Round(d,2,MidpointRounding.AwayFromZero)); 这样子才会已四舍五入来计算,

还有一种简单的办法就是Response.Write(d.ToString("f2")); 这样也会以四舍五入来计算输出。

 寡闻了

posted @ 2012-04-27 19:10  伤心木乃伊  阅读(325)  评论(0编辑  收藏  举报