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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨千里 中级黑马   /  2012-9-6 22:53  /  1447 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨千里 于 2012-9-15 19:13 编辑

Math.round(11.5)等於多少?//  为什么它的结果是12
Math.round(-11.5)等於多少? //       而它的结果是-11

8 个回复

倒序浏览
Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

ceil 向上取整

floor向下取整

round四舍五

评分

参与人数 1黑马币 +1 收起 理由
杨千里 + 1 赞一个!

查看全部评分

回复 使用道具 举报
同楼上!
回复 使用道具 举报
round是四舍五入 通俗的说就是小于5的舍去大于等于5的进位 -11.5进位是往大进也就是-11了
回复 使用道具 举报
本帖最后由 彭润生 于 2012-9-6 23:07 编辑

API上面是这样的:结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 int 类型。换句话说,结果等于以下表达式的值:

(int)Math.floor(a + 0.5f)//值为double的也类似
Math.round(11.5)等於多少?//  他加上0.5然后floor返回比他小的的最大整数。然后强转为int
Math.round(-11.5)等於多少? //       这个就和上面类似了,加上0.5,就变成了-11.0,然后取-11.0然后在强转为int即为-11 。
回复 使用道具 举报
田旭阳 发表于 2012-9-6 22:56
Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应, ...

不错不错。
回复 使用道具 举报
田旭阳 发表于 2012-9-6 22:56
Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应, ...

不错不错。
回复 使用道具 举报
public static long round(double a)返回最接近参数的 long。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 long 类型。换句话说,结果等于以下表达式的值:
(long)Math.floor(a + 0.5d)

public static double floor(double a)返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。特殊情况如下:
如果参数值已经等于某个整数,那么结果与该参数相同。
如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。

所以,只要会了floor()方法,自然就会了round()方法.
回复 使用道具 举报
问题已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马