.Net函数Math.Round你会用吗?

一直以为Math.Round就是四舍五入,谁知道没加参数,得到的结果就是有问题

测试代码:

void Main()
{
    string.Format("Round  {0} = {1}",2.4M,Math.Round(2.4M,0)).Dump();
    string.Format("Round  {0} = {1}",2.5M,Math.Round(2.5M,0)).Dump();
    string.Format("Round  {0} = {1}",2.6M,Math.Round(2.6M,0)).Dump();
    string.Format("Round  {0} = {1}",3.4M,Math.Round(3.4M,0)).Dump();
    string.Format("Round  {0} = {1}",3.5M,Math.Round(3.5M,0)).Dump();
    string.Format("Round  {0} = {1}",3.6M,Math.Round(3.6M,0)).Dump();
}

输出内容:

Round  2.4 = 2
Round  2.5 = 2
Round  2.6 = 3
Round  3.4 = 3
Round  3.5 = 4
Round  3.6 = 4

官方文档:https://msdn.microsoft.com/zh-cn/library/system.midpointrounding(v=vs.110).aspx

其实,我们要做到四舍五入,只要调用重载函数,指定舍入的方式就行了,如:

string.Format("Round  {0} = {1}",2.5M,Math.Round(2.5M,0, MidpointRounding.AwayFromZero)).Dump();

这个结果,就是3了。

时间: 2024-11-03 06:56:53

.Net函数Math.Round你会用吗?的相关文章

C#里Math.Round()函数问题

Math.Round ()在四舍五入时有个问题: Math.Round(2.5,0) = 2; Math.Round(3.5,0) = 4; 2.5应该等于3才对! 在ASP中也存在这个问题,不过ASP中还有个FormatNumber可以用,但目前还不知道怎么使用? 解释: Math.Round()准确的说,这个函数不是四舍五入,而是四舍六入五凑偶,就是说小于4或大于6的该舍该入是没有争议的,而5处在正中间,如果四舍五入则会造成数据的整体偏差,所以采取的原则是:如果舍入位为5,则舍入后最后一位为

C# Math.Round()函数问题

Math.Round   1.取指定位数的小数. 例如:  Math.Round(36.236,2)=36.24; Math.Round(36.232,2)=36.23 2.Math.Round ()在四舍五入时有个问题:  Math.Round(2.5,0) = 2; Math.Round(3.5,0) = 4;         2.5应该等于3才对!                Math.Round()准确的说,这个函数不是四舍五入,而是四舍六入五凑偶,就是说小于4或大于6的该舍该入是没有

JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解_基础知识

首先还是看看JavaScript: The Definitive Guide, 4th Edition中对三个函数的定义. Math.ceil(): round a number up Arguments: Any numeric value or expression Returns: The closest integer greater than or equal to x. ---------------------------------------------------------

as入门之数学函数--Math类

函数 最近总用一些朋友问起一些数学公式,说这些内容不会,所以在这里开一个基础教程,希望能够对大家的学习提供帮助. 在flash中,Math类是一个非常常用的类,通过数学计算,可以实现很多非常美妙的效果,我们在这里从最基础的学起,补一补数学知识. 我们先来看看flash中提供的Math类吧: Math.abs()    计算绝对值.Math.acos()  计算反余弦值.Math.asin()  计算反正弦值.Math.atan() 计算反正切值.Math.atan2()   计算从 x 坐标轴到

C#中Math.Round()实现中国式四舍五入

原文:C#中Math.Round()实现中国式四舍五入 C#中Math.Round()实现中国式四舍五入   C#中的Math.Round()并不是使用的"四舍五入"法.其实在VB.VBScript.C#.J#.T-SQL中Round函数都是采用Banker's rounding(银行家算法),即:四舍六入五取偶.事实上这也是IEEE的规范,因此所有符合IEEE标准的语言都应该采用这样的算法. .NET 2.0 开始,Math.Round 方法提供了一个枚举选项 MidpointRou

Math.Round出错

问题描述 为什么Math.Round会出现这样的结果?我怀疑出现这个问题的原因是我调用了c++的库有关,不光是Math.Round函数,很多数据都会出错.如果不调用c++的库就没有这个问题了.请教出现这个问题的原因,为什么会出现这样的结果,该如何解决?万分感谢!doubled=Math.Round(0.077004402875900269,2);监控d的结果是:0.079999998211860657并不是想要的结果,正确的结果应该是保留小数点后的2位Math.Round(0.553,2)这句的

Javascript四舍五入Math.round()与Math.pow()使用介绍_javascript技巧

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Javascrip

php函数range() round()和list()如何使用

 一>> range()函数快速创建数组的简单方法,使用low到high范围的整数值填充数组,函数将返回一个包含次范围内所有整数的数组.形式如下 array range(int low,int high[,int step]) 典型用法如下 例子:建立1-6的6个数字的数组(骰子) $die = range(0,6); 建立0-30所有双数的数组 $even = (0,20,2);//步长为2 这个函数不仅仅可以用作数字,还可以用作字母. 如 $words = range('A','Z');

JavaScript中用于四舍五入的Math.round()方法讲解

  这篇文章主要介绍了JavaScript中用于四舍五入的Math.round()方法讲解,是JS入门学习中的基础知识,需要的朋友可以参考下 此方法返回一个数四舍五入为最接近的整数的值. 语法 ? 1 Math.round( x ) ; 下面是参数的详细信息: x: 一个数字 返回值: 返回数字四舍五入为最接近的整数的值. 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <html> <head> <ti