SQL server和C#,VB.net中Round方法的差异
来源:互联网 发布:数据分析类网站 编辑:程序博客网 时间:2024/06/06 03:05
在C#中使用Math.Round(1.25, 1),期望得到1.3,结果却是1.2。
1.因为Math.Round方法并不是遵循四舍五入的原则,而是采用“四舍六入五成双”这种方式,若需要舍入到的位的后面"小于5"或"大于5"的话,按通常意义的四舍五入处理.若"若需要舍入到的位的后面"等于5",则要看舍入后末位为偶数还是奇数,举例:
Math.Round(1.25, 1) = 1.2 因为5前面是2,为偶数,所以把5舍去不进位
Math.Round(1.35, 1) = 1.4 因为5前面是3,为奇数,所以进位
而0也看成为偶数,所以Math.Round(0.5, 0) = 0
2.从统计学的角度,"四舍六入五成双"比"四舍五入"要科学,它使舍入后的结果有的变大,有的变小,更平均.而不是像四舍五入那样逢五就入,导致结果偏向大数.
例如:1.15+1.25+1.35+1.45=5.2,若按四舍五入取一位小数计算
1.2+1.3+1.4+1.5=5.4
按"四舍六入五成双"计算,1.2+1.2+1.4+1.4=5.2,舍入后的结果更能反映实际结果
3.在C#和VB.net,都是"四舍六入五成双"原则,而 Sql Server 是简单的"四舍五入"。
但是如果单独对一个数进行四舍五入,这种方法明显是不行的,因为Math.Round(0.5, 0) = 0,所以需要另外自己写一个方法去实现,下面是在我们项目中用的方法,供大家参考:
- public staticdecimal Round(decimal d,int decimals)
- {
- decimal tenPow = Convert.ToDecimal(Math.Pow(10, decimals));
- decimal scrD = d * tenPow + 0.5m;
- return (Convert.ToDecimal(Math.Floor(Convert.ToDouble(scrD))) / tenPow);
- }
另外,如果小数位足够长,也可以Decimal.Round这个方法,举例:
Decimal.Round(1.25, 1) = 1.2
但是如果是 Decimal.Round(1.251, 1) = 1.3
所以采用下面的方法也能达到四舍五入的效果
- public staticdecimal MyDecimalRound(decimal d,int decimals)
- {
- d = d + 0.000000000000001m;
- return Decimal.Round(d, decimals);
- }
- SQL server和C#,VB.net中Round方法的差异
- SQL Server 中Inner join 和where的效率差异
- SQL Server 中Inner join 和where的效率差异
- SQL Server 中Inner join 和where的效率差异
- SQL Server 中Inner join 和where的效率差异
- SQL Server 中Inner join 和where的效率差异
- VB.NET下调用SQL Server存储过程的方法
- 关于vb.net和c#,c#和java语言的语法差异对比
- c#.net与vb.net中读写Cookie的方法!
- 用VB备份和恢复SQL Server数据库的方法
- VB.NET / SQL Server
- 寻求asp.net(vb.net)连接sql server的方法>急!!!!!
- sql server 2005 和 oracle数据库导入的方法及差异
- SQLITE与SQL SERVER中SQL语句的差异
- C#.NET和SQL Server中如何生成GUID
- C#.NET和SQL Server中如何生成GUID
- 求助VB和SQL SERVER的问题
- c#.net 和vb.net的区别
- hadoop集群环境部署之cloudera
- 激励自己
- Apache httpd 远程拒绝服务
- ARM存储系统管理
- UNIX 设置 JAVA 环境变量
- SQL server和C#,VB.net中Round方法的差异
- taobao数据平台官方博客
- 如何在ASP.NET中发送嵌入图片的邮件
- 网页右下角弹窗代码
- 正则表达式
- NSBundle束使用
- SQL Bulk-copy from Excel
- Windows XP64位系统与语言包下载
- rup:<servername>: RPC: Program not registered in RHEL6.1