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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jagon 中级黑马   /  2014-3-19 15:49  /  1668 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.mldn.demo;
public class TestDemo {
    public static void main(String[] args) throws Exception {
        System.out.println(Math.round(15.5)); // 16
        System.out.println(Math.round(15.6)); // 16
        System.out.println(Math.round(15.2356)); // 15
        System.out.println(Math.round(-15.5)); // -15  不是应该是-16吗?为什么不是-16
           }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 上官睿鹏 于 2014-3-19 15:55 编辑

四舍五入是针对正数的,负数求四舍五入值先要将其转化为正数也就是先求绝对值再求四舍五入值

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 歌尽繁华 于 2014-3-19 16:12 编辑

你在坐标轴上标一下,就可以看出-15.5四舍五入一下就是-15了,-15>-15.5
回复 使用道具 举报
四舍五入的话还可以用Math类中的ceil和floor方法
ceil 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数
floor 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
具体的操作可以看毕老师视频第20天的内容

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
我觉得这是数学规则,记住就好,没什么为什么。
一定要找个为什么的话,5入是往大的方向入,而不是往绝对值大的方向入。
回复 使用道具 举报
四舍五入 round方法最后的结果是这个数值+0.5后取其整数部分就行了
回复 使用道具 举报
其实解决的办法有很多很多种
在此介绍几种比较长用和简单的方法
1.Math.ceil()    查询API可以知道该方法将返回最小(最接近负无穷大)浮点值,该值大于或等于该参数,并且等于某个整数。     也就是说
Math.ceil(10.1)那么将返回11
如果我们要保留两位小数,double x;可以Math.ceil(x*100),然后再将此数除以100,
但是现在还没有四舍五入的功能,即使是0.1他也会加1,也就是"0舍9入".
如果要实现四舍五入的功能,代码如下:     Math.ceil(x*100-0.5)/100;   
也就是说如果大于0.5,最后那位才会是0.1,然后交给ceil(),此时就会进1位了.
2.Math.floor()    同样的    返回最大(最接近正无穷大)浮点值,该值小于或等于该参数,并且等于某个整数.
如果想实现四舍五入,写成Math.floor(x*100+0.5)/100即可.
还有round()方法.更为方便.
-------------------------------------------------------------------------------------------------------------------------------但是这样又会出现新的问题,这种方法并不能保证所有情况下都能四舍五入
舍到小数点后第2位,9.649结果为9.65(正常),9.655结果为9.65(?),9.6551结果为9.66(正常),
java.math.BigDecimal可以解决这个问题.(注意是java.math,不是java.lang.math)
BigDecimal    i = new    BigDecimal("9.655").setScale(2,    BigDecimal.ROUND_HALF_UP);
创建一个BigDecimal对象.9.655是需要四舍五入的值.构造了BigDecimal.
然后调用了selScale()这个方法.2为需要保留的小数位数  
ROUND_HALF_UPpublic static final int ROUND_HALF_UP
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。注意,这是我们大多数人在小学时就学过的舍入模式。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马