关闭

Android中Math类Math.floor()、Math.round()及Math.ceil()等方法的使用

标签: androidmathjava
4413人阅读 评论(0) 收藏 举报
分类:

1、Math.floor()

先看定义:

/**
 * Returns the double conversion of the most positive (closest to positive
 * infinity) integer value less than or equal to the argument.
 * <p>
 * Special cases:
 * <ul>
 * <li>{@code floor(+0.0) = +0.0}</li>
 * <li>{@code floor(-0.0) = -0.0}</li>
 * <li>{@code floor(+infinity) = +infinity}</li>
 * <li>{@code floor(-infinity) = -infinity}</li>
 * <li>{@code floor(NaN) = NaN}</li>
 * </ul>
 */
public static native double floor(double d);

由定义可知:Math.floor()表示向下取整。,即小于或等于double型参数的整数位的数字。
比如:Math.floor(18.7)的结果是18.0,Math.floor(-18.3)的结果-19.0,下面再列出几组:

Math.floor(-1.1): -2.0
Math.floor(-1.5): -2.0
Math.floor(-1.6): -2.0
Math.floor(0.1): 0.0
Math.floor(0.5): 0.0
Math.floor(0.6): 0.0
Math.floor(1.1): 1.0
Math.floor(1.5): 1.0
Math.floor(1.6): 1.0

2、Math.round()

接下来看Math.round()的定义:

/**
 * Returns the result of rounding the argument to an integer. The result is
 * equivalent to {@code (int) Math.floor(f+0.5)}.
 * <p>
 * Special cases:
 * <ul>
 * <li>{@code round(+0.0) = +0.0}</li>
 * <li>{@code round(-0.0) = +0.0}</li>
 * <li>{@code round((anything > Integer.MAX_VALUE) = Integer.MAX_VALUE}</li>
 * <li>{@code round((anything < Integer.MIN_VALUE) = Integer.MIN_VALUE}</li>
 * <li>{@code round(+infinity) = Integer.MAX_VALUE}</li>
 * <li>{@code round(-infinity) = Integer.MIN_VALUE}</li>
 * <li>{@code round(NaN) = +0.0}</li>
 * </ul>
 *
 * @param f
 *            the value to be rounded.
 * @return the closest integer to the argument.
 */
public static int round(float f) {
    // check for NaN
    if (f != f) {
        return 0;
    }
    return (int) floor(f + 0.5f);
}

由定义可以很清楚的知道:Math.round()方法表示的是“四舍五入”的计算。
算法为Math.floor(f+0.5),即将原来的数字加上0.5后再向下取整
Math.round(18.5)的结果为19,Math.round(-18.5)的结果为-18。下面再列出几组:

Math.round(-1.1): -1
Math.round(-1.5): -1
Math.round(-1.6): -2
Math.round(0.1): 0
Math.round(0.5): 1
Math.round(0.6): 1
Math.round(1.1): 1
Math.round(1.5): 2
Math.round(1.6): 2

3、Math.ceil()

Math.ceil的定义为:

/**
 * Returns the double conversion of the most negative (closest to negative
 * infinity) integer value greater than or equal to the argument.
 * <p>
 * Special cases:
 * <ul>
 * <li>{@code ceil(+0.0) = +0.0}</li>
 * <li>{@code ceil(-0.0) = -0.0}</li>
 * <li>{@code ceil((anything in range (-1,0)) = -0.0}</li>
 * <li>{@code ceil(+infinity) = +infinity}</li>
 * <li>{@code ceil(-infinity) = -infinity}</li>
 * <li>{@code ceil(NaN) = NaN}</li>
 * </ul>
 */
public static native double ceil(double d);

由定义也可知:Math.ceil()方法就表示向上取整。即大于或等于double型参数的整数位的数字。
比如:Math.ceil(18.3)的结果是19.0,Math.ceil(-18.7)的结果-18.0。再看看一组:

Math.ceil(-1.1): -1.0
Math.ceil(-1.5): -1.0
Math.ceil(-1.6): -1.0
Math.ceil(0.1): 1.0
Math.ceil(0.5): 1.0
Math.ceil(0.6): 1.0
Math.ceil(1.1): 2.0
Math.ceil(1.5): 2.0
Math.ceil(1.6): 2.0

4、Math.rint()

Math.rint()的定义:

/**
 * Returns the double conversion of the result of rounding the argument to
 * an integer. Tie breaks are rounded towards even.
 * <p>
 * Special cases:
 * <ul>
 * <li>{@code rint(+0.0) = +0.0}</li>
 * <li>{@code rint(-0.0) = -0.0}</li>
 * <li>{@code rint(+infinity) = +infinity}</li>
 * <li>{@code rint(-infinity) = -infinity}</li>
 * <li>{@code rint(NaN) = NaN}</li>
 * </ul>
 *
 * @param d
 *            the value to be rounded.
 * @return the closest integer to the argument (as a double).
 */
public static native double rint(double d);

Math.ring()返回double值最接近参数的值,并等于某个整数。如果两个double值跟整数都同样接近,结果是整数值是偶数。特殊情况:

如果参数值已经等于某个整数,那么结果跟参数一样。

如果参数为NaN或无穷大,正零或负零,那么结果和参数一样。
比如例子:

Math.rint(-1.1): -1.0
Math.rint(-1.5): -2.0
Math.rint(-1.6): -2.0
Math.rint(0.1): 0.0
Math.rint(0.5): 0.0
Math.rint(0.6): 1.0
Math.rint(1.1): 1.0
Math.rint(1.5): 2.0
Math.rint(1.6): 2.0
4
0
查看评论

android Math 用法大全

java中有一个很好用的工具类,可以少去很多的if else判断, 但是使用的人并不是很多,发布这篇文章 目的是想让跟多的人使用这个工具类, 提高代码质量和逼格 Math.PI   返回记录的圆周率 Math.E  返回记录e的常量 Math.abs 返回绝对值 ...
  • a22422931
  • a22422931
  • 2016-08-05 15:12
  • 2983

java、Android中Math的一些用法

java.math.Math类常用的常量和方法: Math.PI 记录的圆周率 Math.E记录e的常量 Math.abs 求绝对值 Math.sin 正弦函数 Math.asin 反正弦函数 Math.cos 余弦函数 Math.acos 反余弦函数 Math.tan 正切函数 M...
  • heng615975867
  • heng615975867
  • 2013-10-31 11:46
  • 11272

关于java,android中Math的一些用法

[java] view plain copy public class MathTest   {       public static...
  • huanglei201502
  • huanglei201502
  • 2016-03-01 18:10
  • 1144

android Math的使用

今天,简单讲讲android里的Math类的使用。 这个很简单,只是昨天设置绝对值时忘记了是哪个函数,所以还是记录一下。 java.math.Math类常用的常量和方法: Math.PI 记录的圆周率 Math.E记录e的常量 Math.abs 求绝对值 Math.s...
  • bzlj2912009596
  • bzlj2912009596
  • 2017-11-23 08:34
  • 196

Android double保留两位小数:截取 和 四舍五入

方式一: BigDecimal.setScale()方法用于格式化小数点 setScale(2);//表示保留2位小数,默认用四舍五入方式  setScale(2,BigDecimal.ROUND_DOWN);//直接删除多余的小数位  11.116约=11.11 s...
  • Buaaroid
  • Buaaroid
  • 2015-11-23 16:02
  • 30605

Android中Math取整的三个方法

Android中Math类中提供了三个与取整有关的方法: 分别是ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应 ceil的英文解释是天花板,该方法就表示向上取整,所以,Math.ceil(16.2)的结果为16,Math.ceil(-16.2)的结果是-16; f...
  • zhangxmu
  • zhangxmu
  • 2015-11-01 15:24
  • 9045

关于java、Android中Math的一些用法

java.math.Math类常用的常量和方法: Math.PI 记录的圆周率 Math.E记录e的常量 Math.abs 求绝对值 Math.sin 正弦函数 Math.asin 反正弦函数 Math.cos 余弦函数 Math.acos 反余弦函数 Math.tan 正切函数 M...
  • qq_21445563
  • qq_21445563
  • 2016-04-05 10:26
  • 985

Android FloatMath.ceil过时的解决办法

因为用了别人的代码提示过时   解决办法 改为就可以了 (float)Math.ceil
  • qq_23089525
  • qq_23089525
  • 2016-02-01 11:24
  • 9152

Math取整方法

<br />舍掉小数取整:Math.floor(2)=2<br />舍掉小数取整:Math.floor(2.1)=2<br />舍掉小数取整:Math.floor(-2.1)=-3<br />舍掉小数取整:Math.floor(-2.5)=-3<...
  • arkblue
  • arkblue
  • 2010-08-04 09:54
  • 34842

Android Math.random()解释

Math.random():产生一个[0,1)之间的随机数,大于等于0小于1的随机小数,返回值是double类型的。 eg:int value=(int)(Math.random()*x+y);//生成大于等于0*x+y---小于1*x+y之间的随机整数 也就是大于等于y--小于x+y之间的随机...
  • zhangjikuan
  • zhangjikuan
  • 2014-03-05 22:14
  • 3106
    个人资料
    • 访问:65252次
    • 积分:998
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:1篇
    • 译文:2篇
    • 评论:6条
    博客专栏
    最新评论