android Math算法

这篇博客介绍了Android中Math类的常用方法,包括求绝对值、三角函数、取整、四舍五入、随机数等,并通过代码示例展示了它们的用法。Math.floor()返回不大于某数的最大整数,Math.ceil()返回不小于某数的最大整数,Math.random()生成0到1之间的随机数,Math.rint()和Math.round()则进行四舍五入操作。
摘要由CSDN通过智能技术生成

android Math类的使用
今天,简单讲讲android里的Math类的使用。

这个很简单,只是昨天设置绝对值时忘记了是哪个函数,所以还是记录一下。

java.math.Math类常用的常量和方法:

Math.PI 记录的圆周率

Math.E记录e的常量

Math.abs 求绝对值

Math.sin 正弦函数 Math.asin 反正弦函数

Math.cos 余弦函数 Math.acos 反余弦函数

Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数

Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度

Math.ceil 得到不小于某数的最大整数

Math.floor 得到不大于某数的最大整数

例如:Math.floor(12.7) =12.0

Math.ceil(12.7) =13.0

ceil()是天花板,即向上取整。floor是地板,向下取整。round是四舍五入。

Math.IEEEremainder 求余

Math.max 求两数中最大

Math.min 求两数中最小

Math.sqrt 求开方

Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常

Math.sqrt(x):平方根

Math.pow(x,y):x的y次方

Math.exp 求e的任意次方

Math.log10 以10为底的对数

Math.log 自然对数

Math.rint 求距离某数最近的整数(可能比某数大,也可能比它小)

Math.round 同上,返回int型或者long型(上一个函数返回double型)

Math.random 返回0,1之间的一个随机数

java.math.BigInteger(大整数):

BigInteger bi1=new BigInteger(“1234567890123456890”);

BigInteger bi2=BigInteger.valueOf(123L);

bi1=bi1.add(bi2);//b1+b2

bi1=bi1.multiply(bi2);//b1*b2

bi1=bi1.subtract(bi2);//b1-b2

bi1=bi1.divide(bi2);// b1/b2

java.math.BigDecimal(大浮点数):

BigDecimal bd = new BigDecimal(“3.1415926”);

bd = bd.setScale(2,BigDecimal.ROUND_DOWN);//取3.1415926小数点后面二位

下面举个例子:

public class MathDemo {

public static void main(String args[]){

/**

  • abs求绝对值

*/

System.out.println(Math.abs(-10.4)); //10.4

System.out.println(Math.abs(10.1)); //10.1

/**

  • ceil天花板的意思,就是返回大的值,注意一些特殊值

*/

System.out.println(Math.ceil(-10.1)); //-10.0

System.out.println(Math.ceil(10.7)); //11.0

System.out.println(Math.ceil(-0.7)); //-0.0

System.out.println(Math.ceil(0.0)); //0.0

System.out.println(Math.ceil(-0.0)); //-0.0

/**

  • floor地板的意思,就是返回小的值

*/

System.out.println(Math.floor(-10.1)); //-11.0

System.out.println(Math.floor(10.7)); //10.0

System.out.println(Math.floor(-0.7)); //-1.0

System.out.println(Math.floor(0.0)); //0.0

System.out.println(Math.floor(-0.0)); //-0.0

/**

  • max 两个中返回大的值,min和它相反,就不举例了

*/

System.out.println(Math.max(-10.1, -10)); //-10.0

System.out.println(Math.max(10.7, 10)); //10.7

System.out.println(Math.max(0.0, -0.0)); //0.0

/**

  • random 取得一个大于或者等于0.0小于不等于1.0的随机数

*/

System.out.println(Math.random()); //0.08417657924317234

System.out.println(Math.random()); //0.43527904004403717

/**

  • rint 四舍五入,返回double值

  • 注意.5的时候会取偶数

*/

System.out.println(Math.rint(10.1)); //10.0

System.out.println(Math.rint(10.7)); //11.0

System.out.println(Math.rint(11.5)); //12.0

System.out.println(Math.rint(10.5)); //10.0

System.out.println(Math.rint(10.51)); //11.0

System.out.println(Math.rint(-10.5)); //-10.0

System.out.println(Math.rint(-11.5)); //-12.0

System.out.println(Math.rint(-10.51)); //-11.0

System.out.println(Math.rint(-10.6)); //-11.0

System.out.println(Math.rint(-10.2)); //-10.0

/**

  • round 四舍五入,float时返回int值,double时返回long值

*/

System.out.println(Math.round(10.1)); //10

System.out.println(Math.round(10.7)); //11

System.out.println(Math.round(10.5)); //11

System.out.println(Math.round(10.51)); //11

System.out.println(Math.round(-10.5)); //-10

System.out.println(Math.round(-10.51)); //-11

System.out.println(Math.round(-10.6)); //-11

System.out.println(Math.round(-10.2)); //-10

}

}

android Math的使用就讲完了。

就这么简单。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现双指长按手势可以分为以下几个步骤: 1. 监听触摸事件,记录下每个手指的位置和动作。 2. 当有两个手指按下时,记录下它们的初始位置和时间戳。 3. 当有两个手指移动时,计算它们的距离和时间间隔,如果距离小于一定值并且时间间隔大于一定值,则认为是双指长按手势。 4. 当手指离开屏幕时,清除记录的位置和时间戳。 以下是一个简单的示例代码: ```java public class MyView extends View { private boolean isLongPress = false; private long startTime = 0; private float startX1 = 0; private float startY1 = 0; private float startX2 = 0; private float startY2 = 0; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: // 第一个手指按下 break; case MotionEvent.ACTION_POINTER_DOWN: // 第二个手指按下 if (event.getPointerCount() == 2) { startX1 = event.getX(0); startY1 = event.getY(0); startX2 = event.getX(1); startY2 = event.getY(1); startTime = System.currentTimeMillis(); isLongPress = false; } break; case MotionEvent.ACTION_MOVE: // 两个手指移动 if (event.getPointerCount() == 2) { float endX1 = event.getX(0); float endY1 = event.getY(0); float endX2 = event.getX(1); float endY2 = event.getY(1); float distance = (float) Math.sqrt(Math.pow(endX1 - endX2, 2) + Math.pow(endY1 - endY2, 2)); long duration = System.currentTimeMillis() - startTime; if (distance < 100 && duration > 1000) { isLongPress = true; // 双指长按手势 } } break; case MotionEvent.ACTION_POINTER_UP: // 一个手指离开屏幕 break; case MotionEvent.ACTION_UP: // 所有手指离开屏幕 isLongPress = false; break; } return true; } } ``` 在该示例中,当两个手指距离小于100像素并且时间间隔大于1秒时,就认为是双指长按手势。你可以根据实际需求调整距离和时间的阈值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值