首页 > 其他分享 >3.2. 数学类(Math、BigInteger、BigDecimal)

3.2. 数学类(Math、BigInteger、BigDecimal)

时间:2023-05-30 14:03:23浏览次数:26  
标签:返回 BigInteger BigDecimal val double 3.2 小数

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中的数学类。

file

file

参考文章:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

标签:返回,BigInteger,BigDecimal,val,double,3.2,小数
From: https://blog.51cto.com/u_14241752/6378477

相关文章

  • 操作系统(3.2)--作业和作业调度
    批处理系统中的作业1.作业和作业步(1)作业(Job)。包含了通常的程序和数据,而且还应配有一份作业说明书。在批处理系统中,是以作业为基本单位从外存调入内存的。(2)作业步(JobStep)。每个作业都必须经过若千个相对独立,又相互关联的顺序加工步骤才能得到结果。我们把其中的每一个加工......
  • MAC系统13.2,安装最新版logi options+,打开一直转圈
    我联系官网客服,按照他给的步骤成功的安装了options+,你试试请抽出时间按照下面列出的故障排除步骤尝试解决问题。卸载我们所有的软件删除剩余文件步骤1:打开Finder,在菜单栏中选择“前往>前往文件夹”。步骤2:在“转到文件夹”框中输入/Library,然后敲回车键将其打开。......
  • 2023.21 linux下的文件打包tar
    “tar”是“tapearchive”的缩写,最初是为了在磁带上创建档案而设计的,Linux下常使用tar命令将多个文件或目录打包成一个文件,这样可以方便地将多个文件或目录打包成一个文件,以便于备份或传输。刚从Windows使用Linux的很多可能都没意识到打包和压缩两个不同的概念,打包就是将多......
  • 服务器和电脑主机的区别 103.219.38.x
       我们都知道服务器和台式主机有着不同之处,但具体说出个一二三来很多人还是一头雾水,也就是知其然不知其所以然,都是CPU主板 内存 硬盘 电源,撑死就差一个显卡不同,但其实服务器和我们正常使用的台式主机差距很大,即使是内存都有着许多不同,因为用处不一样所以设计也不一样,下面......
  • 3.2 逻辑设计和硬件控制语言HCL
    在硬件设计中,用电子电路来计算对位进行运算的函数,以及在各种存储器单元中存储位。大多数现代电路技术都是用信号线上的高电压或低电压来表示不同的位值。在当前的技术中,逻辑1是用1.0伏特左右的高电压表示的,而逻辑0是用0.0伏特左右的低电压表示的。要实现一个数字系统需要三个主要......
  • 交叉编译内存分析工具 valgrind3.21.0 (aarch64-linux-gnu-gcc)
    交叉编译工具编译机器:ubuntuServer22LTS编译目标:ARM64开发板https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/注:如果使用7.5以上的GCC,请到ARM官网下载:https://developer.arm.com/downloads/-/gnu-agcc版本(7.5)需对应板子......
  • 3.2 线性回归从零开始实现
    %matplotlibinlineimportrandomimporttorchfromd2limporttorchasd2l3.2.1生成数据集为了简单起见,使用易于可视化的低维数据。使用线性模型\(\boldsymbol{y}=\boldsymbol{Xw}+b+\epsilon\)生成数据集及其标签,其中合成的数据集是一个矩阵\(\boldsymbol{X}\in\R^{1......
  • BGP线路有什么优势?43.248.187.x
       1、消除南北访问障碍由于BGP可以将联通、电信、移动等运营商的线路“合并”,使得中国南北无障碍通讯成为可能,对接入层来说,可使“联通、电信”这类区别消失,更能使一个网站资源无限制的在全国范围内无障碍访问,而不需要在异地部署VPN或者异地加速站来实现异地无障碍访问2、高......
  • BigInteger与BigDecimal类
    Math类java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为double型。abs绝对值acos,asin,atan,cos,sin,tan三角函数sqrt平方根pow(doublea,dobleb)a的b次幂log自然对数expe为底指数max(doublea,doubleb)min(doublea,doubleb)......
  • Cisco Identity Services Engine (ISE) 3.2 Patch2 发布 - 思科身份服务引擎
    CiscoIdentityServicesEngine(ISE)3.2Patch2发布-思科身份服务引擎请访问原文链接:https://sysin.org/blog/cisco-ise-3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org工作场所零信任安全的核心所在任何零信任策略的一个关键组成部分是确保所有人和所有设......