java数学类Math BigInteger BigDecimal使用介绍

 更新时间:2023年06月06日 10:09:18   作者:移动安全星球  
这篇文章主要为大家介绍了java数学类Math、BigInteger、BigDecimal的使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. Math类

Math类提供了一些基本的数学函数,如求平方根、绝对值、三角函数等。它是一个final类,并且所有的方法都是static的,因此无需创建对象,直接使用类名调用方法即可。

以下是Math类的一些常用方法:

  • abs(double a):返回参数的绝对值。
  • ceil(double a):返回大于或等于参数的最小整数值。
  • floor(double a):返回小于或等于参数的最大整数值。
  • round(double a):返回参数四舍五入后的整数值。
  • max(double a, double b):返回两个参数中的最大值。
  • min(double a, double b):返回两个参数中的最小值。
  • sqrt(double a):返回参数的平方根。
  • pow(double a, double b):返回ab次幂。
  • sin(double a):返回参数的正弦值。
  • cos(double a):返回参数的余弦值。
  • tan(double a):返回参数的正切值。

2. BigInteger类

BigInteger类表示任意精度的整数。在处理大整数时,intlong的范围可能不够用,此时可以使用BigInteger类。BigInteger类提供了大量的方法来操作大整数,如加法、减法、乘法、除法等。

以下是创建BigInteger对象的一些方法:

  • BigInteger(String val):根据字符串创建BigInteger对象。
  • valueOf(long val):返回一个等于指定long值的BigInteger对象。

以下是BigInteger类的一些常用方法:

  • add(BigInteger val):返回两个BigInteger对象的和。
  • subtract(BigInteger val):返回两个BigInteger对象的差。
  • multiply(BigInteger val):返回两个BigInteger对象的积。
  • divide(BigInteger val):返回两个BigInteger对象的商。
  • mod(BigInteger val):返回两个BigInteger对象的余数。
  • pow(int exponent):返回当前BigInteger对象的指定次幂。

3. BigDecimal类

BigDecimal类表示任意精度的小数。在处理需要高精度计算的小数时,floatdouble的范围和精度可能不够用,此时可以使用BigDecimal类。BigDecimal类提供了大量的方法来操作小数,如加法、减法、乘法、除法等。

以下是创建BigDecimal对象的一些方法:

  • BigDecimal(String val):根据字符串创建BigDecimal对象。
  • valueOf(double val):返回一个等于指定double值的BigDecimal对象。

以下是BigDecimal类的一些常用方法:

  • add(BigDecimal val):返回两个BigDecimal对象的和。
  • subtract(BigDecimal val):返回两个BigDecimal对象的差。
  • multiply(BigDecimal val):返回两个BigDecimal对象的积。
  • divide(BigDecimal val, int scale, RoundingMode roundingMode):返回两个BigDecimal对象的商,保留指定小数位数,并使用指定的舍入模式。
  • setScale(int newScale, RoundingMode roundingMode):返回一个BigDecimal对象,保留指定小数位数,并使用指定的舍入模式。

4. 示例

下面是一个使用MathBigIntegerBigDecimal类的示例:

import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
public class Main {
    public static void main(String[] args) {
        // 使用Math类
        System.out.println("绝对值:" + Math.abs(-10)); // 输出 "绝对值:10"
        System.out.println("平方根:" + Math.sqrt(9)); // 输出 "平方根:3.0"
        System.out.println("最大值:" + Math.max(3, 7)); // 输出 "最大值:7"
        // 使用BigInteger类
        BigInteger num1 = new BigInteger("987654321098765432");
        BigInteger num2 = new BigInteger("123456789012345678");
        System.out.println("大整数相加:" + num1.add(num2)); // 输出 "大整数相加:1111111110111111110"
        System.out.println("大整数相减:" + num1.subtract(num2)); // 输出 "大整数相减:864197532086419754"
        System.out.println("大整数相乘:" + num1.multiply(num2)); // 输出 "大整数相乘:121932631137021795435340303682"
        // 使用BigDecimal类
        BigDecimal decimal1 = new BigDecimal("123.456");
        BigDecimal decimal2 = new BigDecimal("789.012");
        System.out.println("高精度小数相加:" + decimal1.add(decimal2)); // 输出 "高精度小数相加:912.468"
        System.out.println("高精度小数相减:" + decimal1.subtract(decimal2)); // 输出 "高精度小数相减:-665.556"
        // 高精度小数相乘
        BigDecimal decimal3 = decimal1.multiply(decimal2);
        System.out.println("高精度小数相乘:" + decimal3); // 输出 "高精度小数相乘:97421.697632"
        // 高精度小数相除
        BigDecimal decimal4 = decimal1.divide(decimal2, 5, RoundingMode.HALF_UP);
        System.out.println("高精度小数相除:" + decimal4); // 输出 "高精度小数相除:0.15649"
        // 设置小数位数和舍入模式
        BigDecimal decimal5 = decimal3.setScale(2, RoundingMode.HALF_UP);
        System.out.println("高精度小数保留2位小数:" + decimal5); // 输出 "高精度小数保留2位小数:97421.70"
    }
}

通过这个示例,您可以了解到MathBigIntegerBigDecimal的基本用法和常用方法。在实际编程过程中,您会经常使用这些类来处理数学计算。希望这个介绍能帮助您更好地学习和理解Java中的数学类。

以上就是java数学类(Math、BigInteger、BigDecimal)的详细内容,更多关于java 数学类的资料请关注脚本之家其它相关文章!

相关文章

  • Spring Cloud 覆写远端的配置属性实例详解

    Spring Cloud 覆写远端的配置属性实例详解

    这篇文章主要介绍了Spring Cloud 覆写远端的配置属性的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • maven-maven使用-P参数打包不同环境问题

    maven-maven使用-P参数打包不同环境问题

    这篇文章主要介绍了maven-maven使用-P参数打包不同环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Spring Security使用权限注解实现精确控制

    Spring Security使用权限注解实现精确控制

    在现代的应用系统中,权限管理是确保系统安全性的重要环节,Spring Security作为Java世界最为普及的安全框架,提供了强大而灵活的权限控制功能,这篇文章将深入探讨Spring Security使用权限注解实现精确控制,需要的朋友可以参考下
    2024-12-12
  • JAVA破坏单例模式的方式以及避免方法

    JAVA破坏单例模式的方式以及避免方法

    这篇文章主要介绍了JAVA破坏单例模式的方式以及避免方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 解决idea 通过build project 手动触发热部署失败的问题

    解决idea 通过build project 手动触发热部署失败的问题

    在debug运行项目的过程中,并且保证(不添加方法,不修改方法名)一定的规则的情况下,可以通过build project 来手动热部署项目,本文给大家介绍解决idea 通过build project 手动触发热部署失败的问题,感兴趣的朋友一起看看吧
    2023-12-12
  • mybatis-plus开启sql日志打印的三种方法

    mybatis-plus开启sql日志打印的三种方法

    本文主要介绍了mybatis-plus开启sql日志打印的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Spring Boot 微服务中集成 MyBatis-Plus 与集成原生 MyBatis在配置上的不同

    Spring Boot 微服务中集成 MyBatis-Plus 与集成原生 MyBatis在配置上的不同

    在Spring Boot微服务中,MyBatis-Plus通过其Boot Starter和丰富的配置属性,极大的简化了MyBatis的集成和配置工作,尤其是对于全局设置和常用插件的使用,本文给大家介绍Spring Boot 微服务中集成 MyBatis-Plus与集成原生 MyBatis 有哪些配置上的不同,感兴趣的朋友一起看看吧
    2025-04-04
  • java操作ElasticSearch聚合查询的示例代码

    java操作ElasticSearch聚合查询的示例代码

    这篇文章主要介绍了java操作ElasticSearch聚合查询的示例代码,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-08-08
  • Mybatis-Plus查询出来的数据数量正确,但每条数据都为null问题及解决

    Mybatis-Plus查询出来的数据数量正确,但每条数据都为null问题及解决

    MyBatis默认启用驼峰映射,导致JavaBean属性名与数据库字段名不匹配,查询结果全为null,需关闭驼峰映射以确保字段名正确对应,解决数据映射异常问题
    2025-09-09
  • java使用itext如何直接生成pdf

    java使用itext如何直接生成pdf

    在工作中,制作PDF文件是常见需求,尤其是需要插入动态数据或图像时,使用PDF模板填充表单域通常足够,但对于复杂文件,可以通过拼接PDF内容来灵活排版,iText库提供了丰富的PDF操作功能,如设置页面大小、边距、字体、生成动态表格、添加水印、设置密码等
    2024-09-09

最新评论