Math.Round到底是"四舍五入"还是"五舍六入"

来源:百度文库 编辑:神马文学网 时间:2020/06/01 23:33:36
环境VS2005,VS2003没有测试。
Math.Round (Decimal, Int32) 将小数值舍入到指定精度。
由 .NET Compact Framework 支持。
Math.Round (Double, Int32)
将双精度浮点值舍入到指定精度。
由 .NET Compact Framework 支持。
msdn并没有详细的说明清楚,给了一个例子;
Math.Round(3.44, 1); //Returns 3.4.Math.Round(3.45, 1); //Returns 3.4.Math.Round(3.46, 1); //Returns 3.5.
依照他的例子得到的是"五舍六入",我改变了一下数字得到的结果将完全改变。
Math.Round(3.445, 1); //Returns 3.4.
Math.Round(3.455, 1); //Returns 3.5.
Math.Round(3.465, 1); //Returns 3.5.
Math.Round(3.450, 1); //Returns 3.4.(补0是无效的)
Math.Round(3.4452, 2); //Returns 3.45.
Math.Round(3.4552, 2); //Returns 3.46.
Math.Round(3.4652, 2); //Returns 3.47.
非常奇怪当你需要获得小数点后面一位时,第一位参数必需要比你需要的位数多出两位数时才是正常的“四舍五入”,否则将是“五舍六入”,看来只能自已写四舍五入的算法,不能依赖Math.Round,否则我无法知道他何时使用四舍还是五舍,除非你定死你的第一位参数的位数。
posted @ 2006-08-03 15:54BookWorm 阅读(7539)评论(21)  编辑收藏网摘 所属分类:DotNet2.0

发表评论
回复  引用  
#1楼 2006-08-03 16:27 |
世界上的许多国家已广泛采用“四舍六入法”。我国国家科委于1955年就作了推荐。“四舍 六入法”可以概括为:“四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一。”
回复  引用  查看  
#2楼 2006-08-03 17:09 |Rainy      
好像短一点的口诀叫“四舍、六入、五凑偶”
回复  引用  查看  
#3楼 2006-08-03 17:13 |U2U      
原来如此,不过觉得四舍六入法怪怪的。。。。
回复  引用  查看  
#4楼 2006-08-03 17:51 |自由、创新、研究、探索……      
在工程技术、金融和科学领域,我们往往认为将一个小数圆整到距离它最近的偶数(而并非总是将它向上圆整)更加精确,即我们在此所说的“四舍六入”法。
Math.Round()方法使用的银行家算法的依据,是IEEE Standard 754这个国际标准
回复  引用  
#5楼 2006-08-03 18:11 |
据说欧洲银行全采用这个模式
回复  引用  
#6楼 2006-08-03 20:45 |
这个都不知道,四舍六入五成双,Round都是这样处理的。
回复  引用  查看  
#7楼 2006-08-03 20:49 |可爱的书记      
我也遇到过这个问题,起初也很奇怪,后来看了帮助,果然是四舍六入五靠偶,虽然楼上的所说的四舍六入是国际标准,但是中国的很多业务系统还是采取的是四舍五入的方法,没办法,我只好自己写了个方法来四舍五入了。不过网上有一个不错的方法,虽然有取巧嫌疑,但是一般没什么问题,就是在后面加上0.0000000001,很小的一个数,这时再来取两位,三位或四位就基本没问题了。可以试试
回复  引用  查看  
#8楼 2006-08-04 09:20 |风中的葱      
四舍六入五成双,是为了使大量数据求平均值更加精确
回复  引用  
#9楼 2006-08-04 09:52 |
真是认真处自有学问.
回复  引用  查看  
#10楼 2006-08-04 10:03 |心只有你      
今天才知道“四舍六入”法,真是感谢各位兄台
回复  引用  查看  
#11楼 2006-08-04 11:13 |星期零      
俺也是今天才发现“四舍、六入、五凑偶”,感谢有心的楼主
回复  引用  
#12楼 2006-08-04 19:29 |
长见识了,,晕哦,,看来,一直被老师忽悠着``
回复  引用  查看  
#13楼 2006-08-06 01:37 |attraction      
4舍6入5成双
回复  引用  查看  
#14楼 2006-08-06 11:48 |main      
学习了,我这么大了都没有学过这个口诀:(
回复  引用  
#15楼 2006-09-01 09:34 |
长见识了
回复  引用  
#16楼 2006-11-21 19:44 |
“四舍、六入、五凑偶”比较经典哎~~
回复  引用  
#17楼 2006-11-23 18:28 |
Math.round(-11.5) 等於多少
回复  引用  
#18楼 2008-04-17 11:20 |
Math.round(11.5)返回(long)12,
Math.round(-11.5)返回(long)-11;
回复  引用  
#19楼 2008-06-06 15:11 |
这个函数的正确用法:
' 3.4 = Math.Round( 3.45, 1)
'-3.4 = Math.Round(-3.45, 1)
'
' 3.4 = Math.Round( 3.45, 1, MidpointRounding.ToEven)
' 3.5 = Math.Round( 3.45, 1, MidpointRounding.AwayFromZero)
'
'-3.4 = Math.Round(-3.45, 1, MidpointRounding.ToEven)
'-3.5 = Math.Round(-3.45, 1, MidpointRounding.AwayFromZero)
回复  引用  
#20楼 2008-08-08 08:59 |
我是搞工程施工的,我们的数据处理一直就是“四舍六入,5凑偶”,但如果5前为偶数,但5后还有非零数,则还要进位。