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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘文超 中级黑马   /  2013-1-4 12:00  /  2078 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘文超 于 2013-1-5 22:52 编辑
  1. package org.qyx.online;

  2. public class TestMathRound {

  3.         public static void main(String[] args) {
  4.                 System.out.println(Math.round(11.5));
  5.                 System.out.println(Math.round(-11.5));
  6.                 //打印 12、-11
  7.         }

  8. }
复制代码
//求解释??

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

5 个回复

倒序浏览
2、小数点后第一位=5   
3、正数:Math.round(11.5)=12   
4、负数:Math.round(-11.5)=-11      
5、小数点后第一位<5   
6、正数:Math.round(11.46)=11   
7、负数:Math.round(-11.46)=-11   
8、小数点后第一位>5   
9、正数:Math.round(11.68)=12   
10、负数:Math.round(-11.68)=-12   
根据上面例子的运行结果,我们还可以按照如下方式总结,或许更加容易记忆:   

1、参数的小数点后第一位<5,运算结果为参数整数部分。   2、参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正负)不变。   3、参数的小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整数部分。   
终结:大于五全部加,等于五正数加,小于五全不加

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
在网上看了一堆的解释,觉得不能一下子就能接受,下面是我个人的理解:
Math.round(x),其实说白了,可以按照0.5为分界线;
我们在初中时都学习过,数字大小的表示,可以在数轴上显示出来,在右边的数总是大于左边;
(1)当x的小数部分>0.5时,x为负数时,Math.round(x)结果就是在x的数轴左边的最大整数;x为正数时,Math.round(x)结果就是在x的数轴右边的最小整数;
(2)当x的小数部分<=0.5时,x为负数时,Math.round(x)结果就是在x的数轴右边的最小整数;x为正数时,Math.round(x)结果就是在x的数轴左边的最大整数;
下面看一段代码:
package com.itheima;

public class Test{
public static void main(String[] agrs){
        //负数
        System.out.println(Math.round(-11.25));  //-11
        System.out.println(Math.round(-11.5));  //-11
        System.out.println(Math.round(-11.78));  //-12
        //正数
        System.out.println(Math.round(11.26));  //11
        System.out.println(Math.round(11.5));  //11
        System.out.println(Math.round(11.67));  //12
        }
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 何竹冬 于 2013-1-4 15:59 编辑

你好
通过查阅API发现,先加上 1/2,对结果调用 floor 并将所得结果强制转换为 double类型。换句话说,结果等于以下表达式的值:
(double)Math.floor(a + 0.5f)
也就是说先加上0.5在调用floor取其值。floor方法是返回小于等于参数的最大double值。
也就是说传入11.5的时候运算过程是(double)Math.floor(11.5 + 0.5f)=12.0
传入-11.5的时候运算过程是(double)Math.floor(-11.5 + 0.5f)=-11.0

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
按照四舍五入来理解的话,五入就是变大后的最小整数,四舍就是变小后的最大整数。
回复 使用道具 举报
谢谢楼上几位、、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马