java中Math常用方法总结

本文详细介绍了Java标准库中的Math类用法,包括求平方根、立方根、指数、最大值、最小值等基本数学运算,以及绝对值、取整、随机数生成等实用功能,并对比了不同取整方式的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Demo{
    public static void main(String args[]){  
        /** 
         *Math.sqrt()//计算平方根
         *Math.cbrt()//计算立方根
         *Math.pow(a, b)//计算a的b次方
         *Math.max( , );//计算最大值
         *Math.min( , );//计算最小值
         */  

        System.out.println(Math.sqrt(16));   //4.0 
        System.out.println(Math.cbrt(8));    //2.0
        System.out.println(Math.pow(3,2));     //9.0
        System.out.println(Math.max(2.3,4.5));//4.5
        System.out.println(Math.min(2.3,4.5));//2.3

        /** 
         * 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  
        System.out.println(Math.ceil(-1.7));    //-1.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  

        /** 
         * random 取得一个大于或者等于0.0小于不等于1.0的随机数 [0,1)
         */  
        System.out.println(Math.random());  //小于1大于0的double类型的数
        System.out.println(Math.random()*2);//大于0小于1的double类型的数
        System.out.println(Math.random()*2+1);//大于1小于2的double类型的数

        /** 
         * 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 加0.50向下取整,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  
    }  
}

 

<think>好的,我需要总结Java Math类中常用的与算法相关的方法。首先,我要回顾用户提供的引用内容,特别是引用[1]、[2]、[3]中的信息,确保涵盖这些提到的内容。 首先,引用[1]提到Math类的基本数学运算方法,如绝对值、正负号、最小值、最大值、四舍五入、取整等。这些都是算法中常用的基础操作。我需要列出对应的方法,比如Math.abs()、Math.signum()、Math.min()、Math.max()、Math.round()等。 接下来,引用[2]指出Math类包含指数、对数、平方根和三角函数,以及BigInteger和BigDecimal。这里需要区分java.lang.Mathjava.math包的不同。用户问题主要是关于Math类的方法,所以重点放在Math类本身,但可能简要提及BigInteger和BigDecimal的应用场景。 引用[3]具体提到了Math.sqrt()返回double类型,以及Math.ceil()和Math.floor()的使用。这些方法在算法中处理数值计算时非常重要,例如在二分查找中计算中间值,或者几何问题中的取整操作。 接下来,我需要组织这些方法,按功能分类,比如基础运算、指数与对数、三角函数、随机数生成等。同时,要确保每个方法都有示例代码,说明参数和返回类型,特别是需要注意返回类型是否为double,是否需要类型转换,比如Math.sqrt(16)返回4.0,需要强制转换为int的话需要显式处理。 此外,用户可能关心这些方法在算法中的实际应用。比如,在排序算法中使用Math.min()/max()进行比较,或在动态规划中使用Math.max()求最大值。随机数生成方法Math.random()在快速排序的随机化版本中使用,这也是一个应用点。 需要检查是否有遗漏的重要方法,比如Math.pow()用于幂运算,Math.exp()和Math.log()用于指数和对数计算,这些可能在复杂度分析或数学建模中使用。三角函数可能在图形算法中出现,但可能用户更关注基础算法相关的方法。 最后,确保所有数学表达式使用正确的LaTeX格式,行内公式用$...$,独立公式用$$...$$。例如,平方根用$\sqrt{x}$,幂运算用$x^y$等。同时,生成的相关问题要围绕Java Math类的方法应用、注意事项、性能优化等展开。</think>### Java Math常用算法方法总结 Java的`Math`类提供了丰富的数学方法,在算法实现中常用于数值计算、比较和随机数生成等场景。以下是常用方法分类总结: --- #### 一、基础运算 1. **绝对值** `Math.abs(int/long/float/double x)` ```java int a = Math.abs(-5); // 5 double b = Math.abs(-3.14); // 3.14 ``` 2. **最大值与最小值** `Math.max(a, b)` 和 `Math.min(a, b)` ```java int maxVal = Math.max(10, 20); // 20 double minVal = Math.min(3.14, 2.71); // 2.71 ``` 3. **符号函数** `Math.signum(double/float x)` 返回值为`1.0`(正)、`-1.0`(负)或`0.0`(零)[^1] ```java double sign = Math.signum(-5.5); // -1.0 ``` --- #### 二、指数与对数 1. **幂运算** `Math.pow(double a, double b)` 计算$a^b$,例如:$2^{10} = 1024$ ```java double power = Math.pow(2, 10); // 1024.0 ``` 2. **平方根与立方根** `Math.sqrt(double x)` 和 `Math.cbrt(double x)` ```java double sqrtVal = Math.sqrt(16); // 4.0 double cbrtVal = Math.cbrt(27); // 3.0 ``` 3. **自然对数和以10为底的对数** `Math.log(double x)`(自然对数$\ln x$) `Math.log10(double x)`($\log_{10}x$) ```java double ln = Math.log(Math.E); // 1.0 double log10 = Math.log10(100); // 2.0 ``` --- #### 三、取整与精度 1. **四舍五入** `Math.round(float/double x)` ```java long rounded = Math.round(3.6); // 4 ``` 2. **向上取整与向下取整** `Math.ceil(double x)` 和 `Math.floor(double x)` ```java double ceilVal = Math.ceil(3.2); // 4.0 double floorVal = Math.floor(3.9); // 3.0 ``` 3. **截断小数(强制转换)** ```java int truncated = (int) 3.9; // 3 ``` --- #### 四、三角函数 1. **基本三角函数** `Math.sin(double x)`, `Math.cos(double x)`, `Math.tan(double x)` 参数为弧度值,例如:$\sin(\pi/6) = 0.5$ ```java double sinVal = Math.sin(Math.PI / 6); // 0.5 ``` 2. **反三角函数** `Math.asin(double x)`, `Math.acos(double x)`, `Math.atan(double x)` 返回值为弧度[^2]。 --- #### 五、随机数生成 1. **生成[0,1)的随机数** `Math.random()` ```java double rand = Math.random(); // 例如0.548 ``` 2. **生成指定范围的整数** ```java int randomInt = (int)(Math.random() * 100); // [0, 99] ``` --- #### 六、高精度计算(`java.math`包) 1. **大整数运算** `BigInteger`支持任意精度整数运算: ```java BigInteger a = new BigInteger("12345678901234567890"); BigInteger sum = a.add(BigInteger.ONE); ``` 2. **高精度小数** `BigDecimal`用于金融等需要精确计算的场景: ```java BigDecimal b = new BigDecimal("3.141592653589793"); ``` --- ### 应用场景示例 - **排序算法**:使用`Math.max()`比较元素大小。 - **几何计算**:利用三角函数计算角度或距离。 - **随机化算法**:`Math.random()`用于生成随机基准点(如快速排序优化)。 - **动态规划**:使用`Math.max()`选择最优解。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值