黑马程序员技术交流社区

标题: Math.Round问题。 [打印本页]

作者: 蒋东东    时间: 2013-11-8 00:05
标题: Math.Round问题。
本帖最后由 蒋东东 于 2013-11-8 09:47 编辑

Math.Round(1/2)输出0?这个函数不是四舍五入么。1/2=0.5怎么输入0啊。
作者: hourglass    时间: 2013-11-8 00:19
实际上, 它是先执行1/2的,然后将结果进行四舍五入的,1/2不会直接当做一个数字进行处理。
可以改为Math.Round((float)1/2)或Math.Round(1/(float)2)或Math.Round(1.0/2)或Math.Round(1/2.0)
作者: 凤凰涅槃    时间: 2013-11-8 08:54
准确来说Math.Round()函数不能算是个四舍五入函数。四舍六入五均分。怎么个均分呢,看下图
有些东西需要你亲自去测试一下才能看到真相。


作者: dashanren    时间: 2013-11-8 08:59
这个不关函数的事,如果是整形,"/"是整除求商,它不管余数  。还有'%'是整除求余,它不管商是多少。1/2当然是0余1了。
作者: 凤凰涅槃    时间: 2013-11-8 09:02
为什么我的图片上传后都会被缩这么下啊   受不了啊  只能这样了   把代码复制过来吧上面说的有点不准确   应该是 "四舍六入五取偶"  看看吧希望对你有帮助。。。。。。
  1. <font size="3">Console.WriteLine(Math.Round(-4.5));//运行结果-4
  2.             Console.WriteLine(Math.Round(-3.5));//运行结果-4
  3.             Console.WriteLine(Math.Round(-2.5));//运行结果-2
  4.             Console.WriteLine(Math.Round(-1.5));//运行结果-2
  5.             Console.WriteLine(Math.Round(-0.5));//运行结果-0
  6.             Console.WriteLine(Math.Round(0.5));//运行结果-0
  7.             Console.WriteLine(Math.Round(1.5));//运行结果-2
  8.             Console.WriteLine(Math.Round(2.5));//运行结果-2
  9.             Console.WriteLine(Math.Round(3.5));//运行结果-4
  10.             Console.WriteLine(Math.Round(4.5));//运行结果-4
  11.             Console.WriteLine(Math.Round(5.5));//运行结果-6
  12.             Console.WriteLine(Math.Round(6.5));//运行结果-6
  13.             Console.WriteLine(Math.Round(7.5));//运行结果-8
  14.             Console.WriteLine(Math.Round(8.5));//运行结果-8
  15.             Console.WriteLine(Math.Round(9.5));//运行结果-10
  16.             Console.WriteLine(Math.Round(10.5));//运行结果-10
  17.             Console.WriteLine(Math.Round(11.5));//运行结果-12
  18.             Console.WriteLine(Math.Round(12.5));//运行结果-12</font>
复制代码

作者: 凤凰涅槃    时间: 2013-11-8 09:08
你这里Math.Round(1/2)输出0? 确实是系统先运算1/2=0,跟这个函数没关系,
但是就算是按你想的1/2=0.5,然后Math.Round(0.5)也会输出0的。 我想这样你应该明白了
作者: 蒋东东    时间: 2013-11-8 09:46
凤凰涅槃 发表于 2013-11-8 09:08
你这里Math.Round(1/2)输出0? 确实是系统先运算1/2=0,跟这个函数没关系,
但是就算是按你想的1/2=0.5,然 ...

额。我开始写错了。应该是1.0/2,Math.Round的确不是标准的四舍五入,谢谢你亲测啊。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2