A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋东东 中级黑马   /  2013-11-8 00:05  /  2522 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蒋东东 于 2013-11-8 09:47 编辑

Math.Round(1/2)输出0?这个函数不是四舍五入么。1/2=0.5怎么输入0啊。

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

6 个回复

正序浏览
凤凰涅槃 发表于 2013-11-8 09:08
你这里Math.Round(1/2)输出0? 确实是系统先运算1/2=0,跟这个函数没关系,
但是就算是按你想的1/2=0.5,然 ...

额。我开始写错了。应该是1.0/2,Math.Round的确不是标准的四舍五入,谢谢你亲测啊。
回复 使用道具 举报
你这里Math.Round(1/2)输出0? 确实是系统先运算1/2=0,跟这个函数没关系,
但是就算是按你想的1/2=0.5,然后Math.Round(0.5)也会输出0的。 我想这样你应该明白了
回复 使用道具 举报
为什么我的图片上传后都会被缩这么下啊   受不了啊  只能这样了   把代码复制过来吧上面说的有点不准确   应该是 "四舍六入五取偶"  看看吧希望对你有帮助。。。。。。
  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>
复制代码

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
这个不关函数的事,如果是整形,"/"是整除求商,它不管余数  。还有'%'是整除求余,它不管商是多少。1/2当然是0余1了。

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
准确来说Math.Round()函数不能算是个四舍五入函数。四舍六入五均分。怎么个均分呢,看下图
有些东西需要你亲自去测试一下才能看到真相。

回复 使用道具 举报
实际上, 它是先执行1/2的,然后将结果进行四舍五入的,1/2不会直接当做一个数字进行处理。
可以改为Math.Round((float)1/2)或Math.Round(1/(float)2)或Math.Round(1.0/2)或Math.Round(1/2.0)

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马