黑马程序员技术交流社区
标题:
数据转换问题
[打印本页]
作者:
杨千里
时间:
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