b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c#数字转中文大写?c#取整?C#四舍五入、上取整、下取整

电脑杂谈  发布时间:2016-10-10 05:00:02  来源:网络整理

你是否正在寻找关于c#四舍五入的内容?让我把最完整的东西奉献给你:

在处理一些数据时,我们希望能用“四舍五入”法实现,但是C#采用的是“四舍六入五成双”的方法,如下面的例子,就是用“四舍六入五成双”得到的结果:

为了用C#来实现“四舍五入”,我写了下面的函数:

代码

/// 实现数据的四舍五入法 x) { ; //如果是负数) { isNegative ; v v; } ; ) { IValue ; } ); v IValue; if (isNegative) { v v; } return v; }

经过简单的测试,上面的函数能实现对数据的四舍五入法。

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,则舍入后最后一位为偶数,这是国际惯例。

现在做的项目都要5入,解决方法:

目前做法是:

如:(3.45*100.5)取整,再除以10

C#中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是Banker舍入法Banker'srounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是IEEE规定的舍入标准,。因此所有符合IEEE标准的语言都应该是采用这一算法的

Math.Round方法默认的也是Banker舍入法在.NET2.0中Math.Round方法有几个重载方法

Math.Round(Decimal,MidpointRounding)

Math.Round(Double,MidpointRounding)

Math.Round(Decimal,Int32,MidpointRounding)

Math.Round(Double,Int32,MidpointRounding)

将小数舍入到指定精度。MidpointRounding参数,指定当一个正好处于另两个数中间时如何舍入这个

该参数是个MidpointRounding枚举

此枚举有两个成员:

AwayFromZero当一个数字是其他两个数字的中间时,会将其舍入为两个中绝对较大的。

ToEven当一个数字是其他两个数字的中间时,会将其舍入为最接近的偶数。

所以,要实现四舍五入函数,对于正数,可以加一个MidpointRounding.AwayFromZero参数指定当一个数字是其他两个数字的中间时其舍入为两个中绝对较大的,例:

Math.Round(3.45,2,MidpointRounding.AwayFromZero)

不过对于负数上面的方法就又不对了

因此需要自己写个函数来处理

doubleChinaRound(doublevalue,intdecimals)
{
if(value<0)
{
returnMath.Round(value5/Math.Pow(10,decimals1),decimals,MidpointRounding.AwayFromZero);
}
else
{
returnMath.Round(value,decimals,MidpointRounding.AwayFromZero);
}
}

有些时候不一定要用四舍五入的,可能需要上取整或下取整:

Math.Ceiling()和Math.Floor

Math.Ceiling(3.1)=4;
Math.Floor(3.9)=3;

取天板与地板,与"四舍五入"无关。其实Floor的结果与(int)相同,因此也可以这样写Math.Floor((double)2/30.5)

floor和ceil是mathunit里的函数,使用前要先UsesMath。

trunc和round是systemunit里的函数,缺省就可以用。

floor直接往小的取,比如floor(-123.55)=-124,floor(123.55)=123

trunc直接切下整数,比如trunc(-123.55)=-123,floor(123.55)=123

ceil直接往大的取,比如ceil(-123.55)=-123,ceil(123.55)=124

round计算四舍五入,比如round(-123.55)=-124,round(123.55)=124

C#取整函数向上取整实例

inta=5;

intb=2;

lbl.Text=Convert.ToString(Math.Ceiling((double)a/(double)b));

********************************************************************************************************************************

以上就是关于c#四舍五入的全部内容,相信你一定会非常满意。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-18454-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...