- seo-Url优化
- Repeater, DataList, 和GridView控件的区别
- 如何进行关键词分析?
- css position: absolute、relative详解
- 微商怎么做,微商怎么找客源!
- 网站的meta标签中的property="og:title" 标签是什么意思
- IOC容器使用示例
- img 图片找不到时,设置显示默认图片
- cookie介绍
- String.formatO的详细用法
邮箱:
手机:15383239821
.Net中Math.Round与四舍五入
有不少人误将Math.Round函数当作四舍五入函数在处理, 结果往往不正确, 实际上Math.Round采用的是国际通行的是 Banker 舍入法.
Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的. 这个算法可以概括为:“四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一。”
请看下面的例子:
Math.Round(3.44, 1); //Returns 3.4. 四舍
Math.Round(3.451, 1); //Returns 3.5 五后非零就进一
Math.Round(3.45, 1); //Returns 3.4. 五后皆零看奇偶, 五前为偶应舍 去
Math.Round(3.75, 1); //Returns 3.8 五后皆零看奇偶,五前为奇要进一
Math.Round(3.46, 1); //Returns 3.5. 六入
如果要实现我们传统的四舍五入的功能,一种比较简单,投机的方法就是在数的后面加上0.0000000001,很小的一个数.因为"五后非零就进一", 所以可以保证5一定进一.
当然也可以自己写函数, 下面给出一段代码:
public static decimal UNIT = 0.0.1m
static public decimal Round(decimal d)
{
return Round(d,UNIT)
}
static public decimal Round(decimal d,decimal unit)
{
decimal rm = d % unit;
decimal result = d-rm;
if( rm >= unit /2)
{
result += unit;
}
return result ;
}
-
2013-04-27.Net中Math.Round与四舍五入
-
2019-09-11几种用c# 拼接Json串的方法
-
2011-03-29ASP.NET前台代码绑定后台变量方法总结
-
2010-07-20SEO实操五问-转于点石
-
2025-07-30.NET CORE架构分层2
-
2025-11-08多语言网站必学:Hreflang 标签
