Java大数字运算

在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。

BigInteger 类

如果要存储比 Integer 更大的数字,Integer 数据类型就无能为力了。因此,Java 中提供 BigInteger 类来处理更大的数字。

BigInteger 类型的数字范围较 Integer 类型的数字范围要大得多。BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值。

除了基本的加、减、乘、除操作之外,BigInteger 类还封装了很多操作,像求绝对值、相反数、最大公约数以及判断是否为质数等。

要使用 BigInteger 类,首先要创建一个 BigInteger 对象。BigInteger 类提供了很多种构造方法,其中最直接的一种是参数以字符串形式代表要处理的数字。这个方法语法格式如下:

BigInteger(String val)

这里的 val 是数字十进制的字符串。例如,要将数字 5 转换为 BigInteger 对象,语句如下:

BigInteger bi = new BigInteger("5")

注意:这里数字 5 的双引号是必需的,因为 BigInteger 类构造方法要求参数是字符串类型。

创建 BigInteger 对象之后,便可以调用 BigInteger 类提供的方法进行各种数学运算操作,BigInteger 类的常用运算方法

在这里插入图片描述
将用户输入的数字作为 BigInteger 对象,然后调用该对象的各种方法实现加、减、乘、除和其他运算,并输出结果。代码如下:

import java.math.BigInteger;
import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入一个整型数字:");// 保存用户输入的数字int num = input.nextInt();// 使用输入的数字创建BigInteger对象BigInteger bi = new BigInteger(num + "");// 计算大数字加上99的结果System.out.println("加法操作结果:" + bi.add(new BigInteger("99")));// 计算大数字减去25的结果System.out.println("减法操作结果:" + bi.subtract(new BigInteger("25")));// 计算大数字乘以3的结果System.out.println("乘法橾作结果:" + bi.multiply(new BigInteger("3")));// 计算大数字除以2的结果System.out.println("除法操作结果:" + bi.divide(new BigInteger("2")));// 计算大数字除以3的商System.out.println("取商操作结果:" + bi.divideAndRemainder(new BigInteger("3"))[0]);// 计算大数字除以3的余数System.out.println("取余操作结果:" + bi.divideAndRemainder(new BigInteger("3"))[1]);// 计算大数字的2次方System.out.println("取 2 次方操作结果:" + bi.pow(2));// 计算大数字的相反数System.out.println("取相反数操作结果:" + bi.negate());}
}

将用户输入的整型数字保存到 num 变量中,由于 BigInteger 类的构造方法只接收字符串类型的参数,所以使用“new BigInteger(num+"")”代码来创建 BigInteger 对象。调用 BigInteger 类提供的运算方法,运行效果下所示。

请输入一个整型数字:
125
加法操作结果:224
减法操作结果:100
乘法橾作结果:375
除法操作结果:62
取商操作结果:41
取余操作结果:22 次方操作结果:15625
取相反数操作结果:-125

BigDecimal 类

BigInteger 和 BigDecimal 都能实现大数字的运算,不同的是 BigDecimal 加入了小数的概念。一般的 float 和 double 类型数据只能用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 BigDecimal 类。BigDecimal 类支持任何精度的浮点数,可以用来精确计算货币值。

BigDecimal 常用的构造方法如下。

	BigDecimal(double val):实例化时将双精度型转换为 BigDecimal 类型。BigDecimal(String val):实例化时将字符串形式转换为 BigDecimal 类型。

BigDecimal 类的方法可以用来做超大浮点数的运算,像加、减、乘和除等。在所有运算中,除法运算是最复杂的,因为在除不尽的情况下,末位小数的处理方式是需要考虑的。

下面列出了 BigDecimal 类用于实现加、减、乘和除运算的方法。

BigDecimal add(BigDecimal augend)    // 加法操作BigDecimal subtract(BigDecimal subtrahend)    // 减法操作BigDecimal multiply(BigDecimal multiplieand)    // 乘法操作BigDecimal divide(BigDecimal divisor,int scale,int roundingMode )    // 除法操作

其中,divide() 方法的 3 个参数分别表示除数、商的小数点后的位数和近似值处理模式。

roundingMode 参数支持的处理模式
在这里插入图片描述

使用 BigDecimal 类提供的方法对数字执行运算,并输出结果。代码如下:

import java.math.BigDecimal;
import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入一个数字:");// 保存用户输入的数字double num = input.nextDouble();// 使用输入的数字创建BigDecimal对象BigDecimal bd = new BigDecimal(num);// 计算大数字加上99.154的结果System.out.println("加法操作结果:" + bd.add(new BigDecimal(99.154)));// 计算大数字减去-25.157904的结果System.out.println("减法操作结果:" + bd.subtract(new BigDecimal(-25.157904)));// 计算大数字乘以3.5的结果System.out.println("乘法操作结果:" + bd.multiply(new BigDecimal(3.5)));// 计算大数字除以3.14的结果,并保留小数后2位System.out.println("除法操作结果(保留 2 位小数):" + bd.divide(new BigDecimal(3.14), 2, BigDecimal.ROUND_CEILING));// 计算大数字除以3.14的结果,并保留小数后5位System.out.println("除法操作结果(保留 5 位小数):" + bd.divide(new BigDecimal(3.14), 5, BigDecimal.ROUND_CEILING));}
}

上述代码将用户输入的数字保存到 num 变量中,然后调用“newBigDecimal(num)”方法来创建 BigDecimal 对象。调用 BigDecimal 类提供的运算方法,运行效果如下所示。

请输入一个数字:
100
加法操作结果:199.15399999999999636202119290828704833984375
减法操作结果:125.157903999999998490011421381495893001556396484375
乘法操作结果:350.0
除法操作结果(保留 2 位小数)31.85
除法操作结果(保留 5 位小数)31.84714

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

batchnorm and relu_日本AND荷重传感器

【广州兰瑟】对射式检测方式的发和接相互对射安装,日本AND荷重传感器的光直接对准。当被测物挡住光束时,日本AND荷重传感器传感器输出产生变化以指示被测物被检测到。式是早使用的一种光电检测模式。谢谢如有传感器/仪表/模块/放大器/接线盒...咨询可搜索…

Java时间日期的处理

在 Java 中获取当前时间,可以使用 java.util.Date 类和 java.util.Calendar 类完成。其中,Date 类主要封装了系统的日期和时间的信息,Calendar 类则会根据系统的日历来解释 Date 对象。 Date 类 Date 类表示系统特定的时间戳,可…

R语言基础入门(10)之矩阵和数组

目录 1.矩阵 创建矩阵 查看矩阵的行与列数 转置 2.矩阵子集 3.矩阵行列命名 4.命名后取子集 5.逻辑下标取子集 6.正整数向量的矩阵取子集 7.返回对角线向量 8.创建单位矩阵 9.cbind() 和 rbind() 函数 10. 矩阵运算 10.1 四则运算 10.2 矩阵乘法 10.3 向量与…

foxit phantom pdf 7.3_Jpeg to Pdf Converter 3000批量将图片转为PDF的方法

Jpeg to Pdf Converter 3000是一款非常优秀的图片转PDF软件,该软件界面清爽美观,用户使用该软件,可以快速的将JPG图片转换为PDF文件,而且转换的质量非常高。我们在日常的办公生活中,很多时候为了使图片在传输过程中不被…

Java日期格式化

格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。 在 Java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期。 DateFormat 类 DateFor…

变异系数法之matlab

目录 1.简介 2.算法原理 2.1 指标正向化 2.2 数据标准化 2.3 计算变异系数 2.4 计算权重以及得分 3.实例分析 3.1 读取数据 3.2 指标正向化 3.3 数据标准化 3.4 计算变异系数 3.5 计算权重 3.6 计算得分 完整代码 1.简介 变异系数法(Coefficient of variation …

ui automator viewer 怎么获取界面名_ui交互设计怎么样

ui交互设计怎么样,中天软件培训拥有实力雄厚的师资团队,全部是由国内行业知名专家,全职资深项目讲师、知名企业兼职项目导师组成。ui交互设计怎么样, 一般来说,交互设计师的工作内容就到此为止了。顾名思义&#xff0c…

变异系数法之python

目录 1.简介 2.算法原理 2.1 指标正向化 2.2 数据标准化 2.3 计算变异系数 2.4 计算权重以及得分 3.实例分析 3.1 读取数据 3.2 指标正向化 3.3 查看行数和列数 3.4 数据标准化 3.5 计算变异系数 3.6 计算权重 3.7 计算得分 完整代码 1.简介 变异系数法(Coeff…

电脑上怎么扫二维码_微信里别人发给我的二维码怎么扫

手机版:①打开微信打开聊天框;②点开二维码并长按二维码;③选择识别图中二维码即可。电脑版:①打开对话框点开二维码;②右击二维码选择识别图中二维码即可。

CRITIC法之matlab

目录 1.简介 2.原理解析 2.1 指标正向化及标准化 2.2 计算信息承载量 2.3 计算权重和评分 3.实例分析 3.1 读取数据 3.2 指标正向化及标准化 3.3 计算对比度 3.4 矛盾性 3.5 计算信息载量 3.6 计算权重 3.7 计算得分 完整代码 1.简介 CRITIC是Diakoulaki&#…

Java Object类详解

Object 是 Java 类库中的一个特殊类,也是所有类的父类。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 Object 类。因此,以下两个类表示的含…

sql 成功率_备考2022年MBA: 如何提高清华、北大MBA提前面试成功率|博雅汇MBA

北大清华在国内可是著名高校,也是不少学子梦寐以求的院校,当然这也就早就竞争激烈的现状,无论是高考还是攻读MBA。那么在剧烈竞争压力下,我们怎么能提高被名校录取的几率呢,我今天从材料关和面试关为大家做一个详细的解…

CRITIC法之python

目录 1.简介 2.原理解析 2.1 指标正向化及标准化 2.2 计算信息承载量 2.3 计算权重和评分 3.实例分析 3.1 读取数据 3.2 指标正向化及标准化 3.3 计算对比度 3.4 矛盾性 3.5 计算信息载量 3.6 计算权重 3.7 计算得分 完整代码 1.简介 CRITIC是Diakoulaki&#…

Java Integer类详解

Integer 类在对象中包装了一个基本类型 int 的值。Integer 类对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。 Integer 类的构造方…

层次分析法之matlab

目录 1.简介 2.算法解析 3.实例分析 3.1 构造矩阵 3.2 查看行数和列数 3.3 求特征向量 3.4 找到最大特征值和最大特征向量 3.5 计算权重 3.6 一致性检验 3.7 计算评分 完整代码 1.简介 一种主观赋权的方法,在数据集比较小,实在不好比较的时候…

css布局方式_收藏!40 个 CSS 布局技巧

简介:CSS是Web开发中不可或缺的一部分,随着Web技术的不断革新,CSS也变得更加强大。CSS的众多属性你知道了多少?具体开发中该使用什么属性才最适合恰当?如今的一些CSS属性可以让我们节约更多的时间。比如在Web布局中&am…

Java Float类详解

Float 类的构造方法 Float 类中的构造方法有以下 3 个。 Float(double value):构造一个新分配的 Float 对象,它表示转换为 float 类型的参数。Float(float value):构造一个新分配的 Float 对象,它表示基本的 float 参数。Float(S…

层次分析法之python

目录 1.简介 2.算法解析 3.实例分析 3.1 构造矩阵 3.2 查看行数和列数 3.3 求特征向量 3.4 找到最大特征值和最大特征向量 3.5 计算权重 3.6 一致性检验 3.7 计算评分 完整代码 1.简介 一种主观赋权的方法,在数据集比较小,实在不好比较的时候…

c++数字金字塔_“资金管理是投资最大的秘密”(超级干货),一生死记“金字塔加仓减仓法”,最安全稳健的操盘法方式!...

仓位控制不是精确的科学。它是保证资金安全、有效规避风险、长期稳定盈利的有效手段,有仓位控制意识和规则是股市交易者在心理和技术上成熟的表现之一,仓位控制是建立在市场和个股短期具有不可预测的特性、尊重市场、保证资金安全的基础上的。对于看好的…

Java Double类详解

Double 类的构造方法 Double 类中的构造方法有如下两个。 Double(double value):构造一个新分配的 Double 对象,它表示转换为 double 类型的参数。Double(String s):构造一个新分配的 Double 对象,它表示 String 参数所指示的 do…