黑马程序员技术交流社区

标题: Math.round(11.5)=? [打印本页]

作者: 刘文超    时间: 2013-1-4 12:00
标题: Math.round(11.5)=?
本帖最后由 刘文超 于 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. }
复制代码
//求解释??
作者: 田磊阳    时间: 2013-1-4 12:15
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,负数运算结果为整数部分。   
终结:大于五全部加,等于五正数加,小于五全不加
作者: 而今从头越2012    时间: 2013-1-4 13:58
在网上看了一堆的解释,觉得不能一下子就能接受,下面是我个人的理解:
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
        }
}
作者: 何竹冬    时间: 2013-1-4 14:37
本帖最后由 何竹冬 于 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
作者: 冉世友    时间: 2013-1-4 23:13
按照四舍五入来理解的话,五入就是变大后的最小整数,四舍就是变小后的最大整数。
作者: 刘文超    时间: 2013-1-5 22:52
谢谢楼上几位、、




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