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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 第一枭雄 中级黑马   /  2013-5-19 14:26  /  2183 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 第一枭雄 于 2013-5-23 19:41 编辑

Math.round(11.5)   =   12              Math.round(-11.5)  =  -11
Math.round(11.6)   =   12              Math.round(-11.6)  =  -12


何解?如何破……

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

12 个回复

倒序浏览
static long round(double a)
          返回最接近参数的 long。
回复 使用道具 举报
本帖最后由 许智敏 于 2013-5-19 14:43 编辑

画个图,希望可以解决你的问题

PS:图中负数四舍的位置,忘了一个  -12.0

无标题.jpg (89.65 KB, 下载次数: 0)

无标题.jpg

评分

参与人数 1技术分 +2 收起 理由
袁梦希 + 2 图画的不错,值得两分

查看全部评分

回复 使用道具 举报
x的"四舍五入"其实是这样子的
x+0.5后的值再取整数就是
源码:
public static int round(float a)
{
  return (int)Math.floor(x+0.5f);
}

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
貌似问题解决了
要是解决及时更改问题状态,重新编辑为已解决
否则继续追问
回复 使用道具 举报
chouwayメ 发表于 2013-5-19 17:45
x的"四舍五入"其实是这样子的
x+0.5后的值再取整数就是
源码:

那你意思round(-11.7)= (int)(-11.7+0.5)=(int)-11.2=-11   ???
回复 使用道具 举报
第一枭雄 发表于 2013-5-22 21:04
那你意思round(-11.7)= (int)(-11.7+0.5)=(int)-11.2=-11   ???

round()的底层运算为:
public static int round(float a)
{
  return (int)Math.floor(x+0.5f);
}
意思为先加0.5,然后再取比加0.5以后还小的并且最接近的那个数,
-11.7+0.5后为-11.2,比-11.2小的并且最接近的那个数为-12,所以
结果为-12。
回复 使用道具 举报
本帖最后由 chouwayメ 于 2013-5-23 08:18 编辑
第一枭雄 发表于 2013-5-22 21:04
那你意思round(-11.7)= (int)(-11.7+0.5)=(int)-11.2=-11   ???


floor的意思底层.
取整的意思是取不大于那个加完的数的并且最接近的整数。
比如-11.7+0.5=-11.2
比这个数还小并且最接近的整数是-12
-11比那-11.2大.
回复 使用道具 举报
~与狼共舞~ 发表于 2013-5-23 00:23
round()的底层运算为:
public static int round(float a)
{

嗯 差不多哦 不过floor的意思是 取"不大于"的并且最接近的整数

回复 使用道具 举报
楼主提问题的时候尽量详细,如果不懂怎么加分,请看我下面的个性签名
回复 使用道具 举报
就是四舍五入啊,纯粹的数学知识。。。
回复 使用道具 举报
chouwayメ 发表于 2013-5-23 08:22
嗯 差不多哦 不过floor的意思是 取"不大于"的并且最接近的整数

好吧……根本就没注意那个floor……
回复 使用道具 举报
chouwayメ 发表于 2013-5-23 08:22
嗯 差不多哦 不过floor的意思是 取"不大于"的并且最接近的整数

是的,就这意思
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马