黑马程序员技术交流社区

标题: 数据转换问题 [打印本页]

作者: 杨千里    时间: 2012-9-6 22:53
标题: 数据转换问题
本帖最后由 杨千里 于 2012-9-15 19:13 编辑

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


作者: 田旭阳    时间: 2012-9-6 22:56
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四舍五

作者: 武庆东    时间: 2012-9-6 22:57
同楼上!
作者: 毛标    时间: 2012-9-6 23:04
round是四舍五入 通俗的说就是小于5的舍去大于等于5的进位 -11.5进位是往大进也就是-11了
作者: 彭润生    时间: 2012-9-6 23:04
本帖最后由 彭润生 于 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 23:25
田旭阳 发表于 2012-9-6 22:56
Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应, ...

不错不错。
作者: 张飞年    时间: 2012-9-6 23:25
田旭阳 发表于 2012-9-6 22:56
Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应, ...

不错不错。
作者: AngieFans85    时间: 2012-9-6 23:29
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()方法.
作者: 杨千里    时间: 2012-9-6 23:57
问题已经解决




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