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

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

目前做法是:

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

时间: 2024-12-30 08:11:40

C#里Math.Round()函数问题的相关文章

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的该舍该入是没有

Math.Round出错

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

.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.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. ---------------------------------------------------------

sqlserver四舍五入使用round函数及cast和convert函数_MsSql

引言       今天和测试沟通一个百分比计算方式时遇到一个问题, 我在存储过程里用到了强转CAST(32.678 AS DECIMAL(5,1))  我认为该方式只会保留一位小数,我给测试的回复是我并没有用到四舍五入函数,数据也没有四舍五入,而测试说他们自己验证后觉的数据是经过四舍五入了的. 想到这里于是我再试了试存储过程的每个计算点,才发现了这个问题. ROUND      那么用到四舍五入并且保留小数点时我们肯定会首选ROUND函数,  如果字段的数据类型是decimal(18,10)时那

jsp-我不懂这个js里的eval函数到底在哪里用到了

问题描述 我不懂这个js里的eval函数到底在哪里用到了 详细的代码如下var navigator_appName = ""chrome"";var window;var dbits;var canary=0xdeadbeefcafe;var j_lm=((canary&0xffffff)==0xefcafe);function BigInteger(abc){if(a!=null)if(""number""==typ

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

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

javascript-js里Math对象的属性和方法不能遍历,这是怎么回事?

问题描述 js里Math对象的属性和方法不能遍历,这是怎么回事? 突发奇想,想把js的Math遍历一下,结果发现用for-in没有返回值,也没有错误显示,这是怎么回事? 解决方案 Math只有静态属性和静态方法,不能被实例化,也就不能作为for-in的参数. 我测试了,没有显示.不过你要是用for-in 测试window对象的话,就能看到window对象有好多的属性了. Math这种功能性的函数,可能就不适合用for-in来测试了吧.