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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马-许鹏 于 2013-5-15 23:11 编辑

Math类提供对几个对小数取整的静态方法:ceil()方法,floor()方法,rint()方法,看下列代码;
  1. class  MathDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 double d=-3.14;
  6.                 System.out.println(Math.ceil(d));
  7.                 System.out.println(Math.floor(d));
  8.                 System.out.println(Math.rint(d));
  9.         }
  10. }
复制代码
打印结果如下:

这三个方法分别是:
1,取大于参数的最小整数。
2,取小于参数的最大整数。
3,最接近参数的整数(四舍五入)。
这没什么问题,不过我以前记得是有一个方法,可以对小数点后面全部砍掉直接保留整数位。不知道我记错没有,我查了API文档,有这么一个方法
[size=-1]static long
round(double a)  返回最接近参数的 long。

返回最接近参数的long。呵呵,这个跟rint()方法有啥区别啊?{:soso_e132:}

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 李志敏 于 2013-5-14 08:21 编辑

首先返回值类型不一样 Math.rint()返回double  Math.round()返回Long
其次 Math.rint()是通过四舍五入取最接近参数的整数 而 Math.round()仅仅是取最接近参数的 整数
也就是说 如果参数是-3.5 那么rint()返回-4.0 round()返回-3 因为-3.5更接近-3 其实不考虑小数点 返回值的大小也就在参数是xxx.5的时候不一样
  1. class  MathDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 double d=-3.5;
  6.                 System.out.println(Math.ceil(d));
  7.                 System.out.println(Math.floor(d));
  8.                 System.out.println(Math.rint(d));
  9.                 System.out.println(Math.round(d));
  10.         }
  11. }
复制代码
打印结果:
-3.0
-4.0
-4.0
-3

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
强制转换。。也可以
回复 使用道具 举报
如果问题解决,及时结贴。。把未解决变成以解决就行了。
回复 使用道具 举报
李志敏 发表于 2013-5-14 08:17
首先返回值类型不一样 Math.rint()返回double  Math.round()返回Long
其次 Math.rint()是通过四舍五入取最 ...

有直接砍掉小数点后面直接保留整数部分的方法吗?
回复 使用道具 举报
黑马-许鹏 发表于 2013-5-14 16:22
有直接砍掉小数点后面直接保留整数部分的方法吗?

强制转换成int类型
System.out.println((int)d);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马