.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")); 这样也会以四舍五入来计算输出。
寡闻了