什么是大数?大数有什么用?如何使用大数?

news2024/12/23 2:03:49

0 什么是大数

如果基本的整数和浮点数精度不能够满足需求,那么可以使用 javamath 包中两个很有用的类:BigInteger和 BiDecimal。
这两个类可以处理包含任意长度数字序列的数值。
BigInteger类实现任意精度的整数运算,BigDecimal实现任意精度的浮点数运算。

1 大数有什么用

在特定的时候必须用大数,不然会发生错误;
例如:

        for (int  i = 1; i < 11 ; i++) {
            System.out.println(i*0.1);
        }

正常来说会输出0.1~1
但是结果为:
在这里插入图片描述

所以说,这时候就需要用大数来处理了。

假设用大数:

        BigDecimal bigDecimal = BigDecimal.valueOf(0.1);
        for (int i = 1; i < 11 ; i++) {
            System.out.println(bigDecimal.multiply(BigDecimal.valueOf(i)));
        }

结果就正常了。
在这里插入图片描述

2 使用大数

构造大数:
使用静态的 valueof 方法可以将普通的数值转换为大数:BigInteger a= BigInteger.value0f(100);
大数计算:
不能使用算术运算符(如:+和*)处理大数,而需要使用大数类中的add和multiply方法。
还有一些常量:
在这里插入图片描述
在这里插入图片描述

大数的所有方法

BigInteger

Modifier and TypeMethod and Description
BigIntegerabs() 返回的值BigInteger是BigInteger的绝对值。
BigIntegeradd(BigInteger val) 返回的值是 (this + val) BigInteger。
BigIntegerand(BigInteger val) 返回的值是 (this & val) BigInteger。
BigIntegerandNot(BigInteger val) 返回的值是 (this & ~val) BigInteger。
intbitCount() 返回在补码表示这个BigInteger不同于其符号位的比特数。
intbitLength() 返回最小的二进制补码表示这个BigInteger的比特数,不包括符号位。
bytebyteValueExact() 将这一 byte BigInteger,检查丢失的信息。
BigIntegerclearBit(int n) 返回一个BigInteger其值等效于这个BigInteger与指定点清除。
intcompareTo(BigInteger val) 这个BigInteger与指定BigInteger比较。
BigIntegerdivide(BigInteger val) 返回的值是 (this / val) BigInteger。
BigInteger[]divideAndRemainder(BigInteger val) 返回两个关于大整数包含 (this / val)随后 (this % val)数组。
doubledoubleValue() 将这一 double BigInteger。
booleanequals(Object x) 这与平等BigInteger指定对象比较。
BigIntegerflipBit(int n) 返回一个BigInteger其值等效于这个BigInteger与指定的位翻转。
floatfloatValue() 将这一 float BigInteger。
BigIntegergcd(BigInteger val) 返回的值是 abs(this) BigInteger和 abs(val)最大公约数。
intgetLowestSetBit() 返回最右边的指数(低级)在BigInteger这一点(在最右边的一位右零比特数)。
inthashCode() 返回此BigInteger的哈希代码。
intintValue() BigInteger将这一 int
intintValueExact() 将这一 int BigInteger,检查丢失的信息。
booleanisProbablePrime(int certainty) 返回 true如果这很可能就是BigInteger总理, false如果它肯定复合。
longlongValue() 将这一 long BigInteger。
longlongValueExact() 将这一 long BigInteger,检查丢失的信息。
BigIntegermax(BigInteger val) 返回此BigInteger和 val最大。
BigIntegermin(BigInteger val) 返回此BigInteger和 val最小。
BigIntegermod(BigInteger m) 返回一个BigInteger的价值 (this mod m)。
BigIntegermodInverse(BigInteger m) 返回的值是 (this - 1 mod m) BigInteger。
BigIntegermodPow(BigInteger exponent, BigInteger m) 返回的值是 (thisexponent mod m) BigInteger。
BigIntegermultiply(BigInteger val) 返回的值是 (this * val) BigInteger。
BigIntegernegate() 返回的值是 (-this) BigInteger。
BigIntegernextProbablePrime() 返回第一个整数大于这个 BigInteger可能是素数。
BigIntegernot() 返回的值是 (~this) BigInteger。
BigIntegeror(BigInteger val) 返回的值是 `(this
BigIntegerpow(int exponent) 返回的值是 (thisexponent) BigInteger。
static BigIntegerprobablePrime(int bitLength, Random rnd) 返回一个正的BigInteger可能是素数,用指定的个位长度。
BigIntegerremainder(BigInteger val) 返回的值是 (this % val) BigInteger。
BigIntegersetBit(int n) 返回一个BigInteger其值等效于这个BigInteger与指定的点集。
BigIntegershiftLeft(int n) 返回的值是 (this << n) BigInteger。
BigIntegershiftRight(int n) 返回的值是 (this >> n) BigInteger。
shortshortValueExact() 将这一 short BigInteger,检查丢失的信息。
intsignum() 返回此BigInteger的符号函数。
BigIntegersubtract(BigInteger val) 返回的值是 (this - val) BigInteger。
booleantestBit(int n) 返回 true当且仅当指定的位设置。
byte[]toByteArray() 返回一个包含此BigInteger的二进制补码表示的字节数组。
StringtoString() 返回此BigInteger十进制字符串表示形式。
StringtoString(int radix) 返回在给定的基本BigInteger的字符串表示形式。
static BigIntegervalueOf(long val) 返回一个BigInteger其值等于指定的 long
BigIntegerxor(BigInteger val) 返回的值是 (this ^ val) BigInteger。

BigDecimal

Modifier and TypeMethod and Description
BigDecimalabs() 返回一个 BigDecimal其价值是本 BigDecimal的绝对值,其规模 this.scale()
BigDecimalabs(MathContext mc) 返回一个 BigDecimal其价值是本 BigDecimal绝对值舍入根据语境设置。
BigDecimaladd(BigDecimal augend) 返回的值是 BigDecimal (this + augend),其规模 max(this.scale(), augend.scale())
BigDecimaladd(BigDecimal augend, MathContext mc) 返回的值是 BigDecimal (this + augend),舍入根据语境的设置。
bytebyteValueExact() 将这一 byte BigDecimal,检查丢失的信息。
intcompareTo(BigDecimal val)BigDecimal与指定的 BigDecimal比较。
BigDecimaldivide(BigDecimal divisor) 返回的值是 BigDecimal (this / divisor),和其首选的规模 (this.scale() - divisor.scale());如果准确的商不能代表(因为它有一个十进制小数点扩展)的 ArithmeticException抛出。
BigDecimaldivide(BigDecimal divisor, int roundingMode) 返回的值是 BigDecimal (this / divisor),其规模 this.scale()
BigDecimaldivide(BigDecimal divisor, int scale, int roundingMode) 返回的值是 BigDecimal (this / divisor),其规模为指定的。
BigDecimaldivide(BigDecimal divisor, int scale, RoundingMode roundingMode) 返回的值是 BigDecimal (this / divisor),其规模为指定的。
BigDecimaldivide(BigDecimal divisor, MathContext mc) 返回的值是 BigDecimal (this / divisor),舍入根据语境的设置。
BigDecimaldivide(BigDecimal divisor, RoundingMode roundingMode) 返回的值是 BigDecimal (this / divisor),其规模 this.scale()
BigDecimal[]divideAndRemainder(BigDecimal divisor) 返回一二元 BigDecimal数组包含的结果 divideToIntegralValue随后的结果 remainder在两个操作数。
BigDecimal[]divideAndRemainder(BigDecimal divisor, MathContext mc) 返回一二元 BigDecimal数组包含的结果 divideToIntegralValue随后对两个操作数舍入根据上下文设置 remainder计算结果。
BigDecimaldivideToIntegralValue(BigDecimal divisor) 返回的值是 BigDecimal(this / divisor)整数部分向下舍入。
BigDecimaldivideToIntegralValue(BigDecimal divisor, MathContext mc) 返回的值是 BigDecimal (this / divisor)整数部分。
doubledoubleValue() 将这一 double BigDecimal
booleanequals(Object x)BigDecimal与平等的规定 Object比较。
floatfloatValue() 将这一 float BigDecimal
inthashCode() 返回此 BigDecimal哈希代码。
intintValue() 将这一 int BigDecimal
intintValueExact() 将这一 int BigDecimal,检查丢失的信息。
longlongValue() 将这一 long BigDecimal
longlongValueExact() 将这一 long BigDecimal,检查丢失的信息。
BigDecimalmax(BigDecimal val) 返回该 BigDecimalval最大。
BigDecimalmin(BigDecimal val) 返回该 BigDecimalval最小。
BigDecimalmovePointLeft(int n) 返回一个 BigDecimal相当于一个与小数点移动 n地方留下。
BigDecimalmovePointRight(int n) 返回一个 BigDecimal相当于这一 n小数点移动到正确的地方。
BigDecimalmultiply(BigDecimal multiplicand) 返回的值是 BigDecimal (this × multiplicand),其规模 (this.scale() + multiplicand.scale())
BigDecimalmultiply(BigDecimal multiplicand, MathContext mc) 返回的值是 BigDecimal (this × multiplicand),舍入根据语境的设置。
BigDecimalnegate() 返回的值是 BigDecimal (-this),其规模 this.scale()
BigDecimalnegate(MathContext mc) 返回的值是 BigDecimal (-this),舍入根据语境的设置。
BigDecimalplus() 返回的值是 BigDecimal (+this),其规模 this.scale()
BigDecimalplus(MathContext mc) 返回的值是 BigDecimal (+this),舍入根据语境的设置。
BigDecimalpow(int n) 返回的值是 BigDecimal (thisn),权力是精确计算,无限精度。
BigDecimalpow(int n, MathContext mc) 返回的值是 (thisn) BigDecimal
intprecision() 返回该 BigDecimal的精度。
BigDecimalremainder(BigDecimal divisor) 返回的值是 (this % divisor) BigDecimal
BigDecimalremainder(BigDecimal divisor, MathContext mc) 返回的值是 BigDecimal (this % divisor),舍入根据语境的设置。
BigDecimalround(MathContext mc) 返回一个 BigDecimal圆形根据 MathContext设置。
intscale() 返回该 BigDecimal的规模。
BigDecimalscaleByPowerOfTen(int n) 返回来的值等于( this×10 n)。
BigDecimalsetScale(int newScale) 返回一个 BigDecimal其规模是指定的值,其值是数值等于该 BigDecimal的。
BigDecimalsetScale(int newScale, int roundingMode) 返回一个 BigDecimal其规模是规定值,且不成比例的价值乘以或除以 BigDecimal的缩放值十的合适的电源来维持其整体价值的确定。
BigDecimalsetScale(int newScale, RoundingMode roundingMode) 返回一个 BigDecimal其规模是规定值,且不成比例的价值乘以或除以 BigDecimal的缩放值十的合适的电源来维持其整体价值的确定。
shortshortValueExact() 将这一 short BigDecimal,检查丢失的信息。
intsignum() 返回该 BigDecimal signum函数。
BigDecimalstripTrailingZeros() 返回一个 BigDecimal,数值上等于这一但任何尾随零从表示删除。
BigDecimalsubtract(BigDecimal subtrahend) 返回的值是 BigDecimal (this - subtrahend),其规模 max(this.scale(), subtrahend.scale())
BigDecimalsubtract(BigDecimal subtrahend, MathContext mc) 返回的值是 BigDecimal (this - subtrahend),舍入根据语境的设置。
BigIntegertoBigInteger() 将这一 BigInteger BigDecimal
BigIntegertoBigIntegerExact() 将这一 BigInteger BigDecimal,检查丢失的信息。
StringtoEngineeringString()BigDecimal返回字符串表示,如果指数是需要使用工程符号。
StringtoPlainString() 返回一个没有指数域这 BigDecimal字符串表示形式。
StringtoString() 返回该 BigDecimal字符串表示,如果指数是需要使用科学记数法。
BigDecimalulp() 返回一个小的尺寸,最后一个单元,这 BigDecimal
BigIntegerunscaledValue() 返回一个 BigInteger其价值是本 BigDecimal的不成比例的价值。
static BigDecimalvalueOf(double val) 翻译 doubleBigDecimal,使用 double正则字符串表示的 Double.toString(double)方法提供。
static BigDecimalvalueOf(long val) 翻译 long值变成零规模 BigDecimal
static BigDecimalvalueOf(long unscaledVal, int scale) 翻译 long不成比例的价值和 int规模为 BigDecimal

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

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

相关文章

Android | Fragment

Android Fragment Fragment 概念 Fragment 表示应用界面中可重复的一部分&#xff0c;Fragment 定义和管理自己的布局&#xff0c;具有自己的生命周期&#xff0c;并且可以处理自己的输入事件。fragment 不能独立存在&#xff0c;而是必须由 Activity 或另一个 fragment 托管…

麦克纳姆轮(麦轮)原理

一、麦轮原理 麦克纳姆轮&#xff1a;简称麦轮&#xff0c;由轮毂和围绕轮毂的辊子组成。 辊子&#xff1a;没有动力的从动小滚轮。 麦克纳姆轮辊子轴线和轮毂轴线夹角是45度。 A轮&#xff08;左旋&#xff09;与B轮&#xff08;右旋&#xff09;互为镜像关系 麦轮在车上的…

Go语言开发小技巧易错点100例(五)

往期回顾&#xff1a; Go语言开发小技巧&易错点100例&#xff08;一&#xff09;Go语言开发小技巧&易错点100例&#xff08;二&#xff09;Go语言开发小技巧&易错点100例&#xff08;三&#xff09;Go语言开发小技巧&易错点100例&#xff08;四&#xff09; …

打工人必学的法律知识(五)——《女职工劳动保护特别规定》

女职工劳动保护特别规定https://flk.npc.gov.cn/detail2.html?ZmY4MDgwODE2ZjNjYmIzYzAxNmY0MTBmMWVkNTE0NTE &#xff08;2012年4月18日国务院第200次常务会议通过 2012年4月28日中华人民共和国国务院令第619号公布 自公布之日起施行&#xff09;第一条 为了减少和解决女职工…

如何减少频繁创建数据库连接的性能损耗?

为极速开发出一套某垂直领域电商系统&#xff0c;采用最简架构&#xff1a; 前端一台Web服务器运行业务代码后端一台DB服务器存储业务数据 大多系统初生时就是这样&#xff0c;只是随业务不但发展变得复杂&#xff0c;架构迭代。系统上线后&#xff0c;虽用户量不大&#xf…

第十三届蓝桥杯大赛软件类决赛Java大学B组C题——左移右移

【问题描述】 小蓝有一个长度为 N 的数组&#xff0c;初始时从左到右依次是 1, 2, 3, . . . N。 之后小蓝对这个数组进行了 M 次操作&#xff0c;每次操作可能是以下 2 种之一&#xff1a; 左移 x&#xff0c;即把 x 移动到最左边。右移 x&#xff0c;即把 x 移动到最右边。 …

数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发完整代码+报告+课设)

1、内容简介利用MATLAB GUI设计平台&#xff0c;用窗函数法设计FIR数字滤波器&#xff0c;对所给出的含有噪声的声音信号进行数字滤波处理&#xff0c;得到降噪的声音信号&#xff0c;进行时域频域分析&#xff0c;同时分析不同窗函数的效果。将文件解压至一个目录下&#xff0…

ithewei的2022年度总结

窗外的雨&#xff0c;顺着晒衣架汇聚成豆大的珠&#xff0c;落到一楼庭院顶棚上&#xff0c;嘀嗒不停&#xff1b; 路上的车&#xff0c;由远及近&#xff0c;又由近及远&#xff0c;疾驰而过&#xff1b; 床边的猫&#xff0c;也已入睡&#xff0c;时不时发出一两声细微的鼾声…

面试问:@Resource 和@Autowired 的区别是什么?该怎么回答

Resource 和 Autowired 这两个注解的作用都是Spring生态里面去实现 Bean 的依赖注入 Autowired注解的作用 Autowired是Spring里面提供的一个注解&#xff0c;它默认是根据类型来实现Bean的依赖注入。 Autowired注解里面有一个required属性&#xff0c;它的默认值是true&#…

人大金仓数据库安装篇

图形化安装 规划安装路径与修改目录属主 先用root账户挂载金仓镜像包 mount -o loop /install/KingbaseES_V008R006C005B0023_Lin64_single_install.iso /mnt 切换kingbase用户来安装金仓数据库 进入挂载目录/mnt执行./setup.sh 将金仓注册为系统服务 /KingbaseES/V8/Scrip…

1592_AURIX_TC275_PMU_部分安全措施

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) UCB的几种状态通过寄存器的数值可以直接获取到。启动代码会识别到UCB的错误&#xff0c;如果识别到后悔停止继续&#xff0c;因此不会启动MCU。启动代码也会检查HSM是否存在以及是否需要启…

基于TensorFlow2搭建神经网络实现鸢尾花iris.txt分类

分三步&#xff1a;本地读取鸢尾花数据集搭建神经网络优化本地读取鸢尾花数据集读取本地数据集的两种方法读取本地数据集有两种方法&#xff1a;&#xff08;1&#xff09;利用pandas中的函数读取&#xff0c;并处理成神经网络需要的数据结构pd.read_csv(文件名, header第几行作…

使用码云Gitee创建代码仓库并提交代码

目录 1. 登录Gitee官网 2. 创建代码仓库 3. 克隆仓库到本地 4. 提交代码到Gitee仓库 官方文档&#xff1a;创建你的第一个仓库 - Gitee.com 1. 登录Gitee官网 官网地址&#xff1a;Gitee - 基于 Git 的代码托管和研发协作平台 2. 创建代码仓库 点击图中加号创建仓库&am…

String的不可变性

1.什么是不可变对象 如果一个对象在创建之后就不能再改变它的状态&#xff0c;那么这个对象是不可变的&#xff08;Immutable&#xff09;。不能改变状态的意思是&#xff0c;不能改变对象内的成员变量&#xff0c;包括基本数据类型变量的值不能改变&#xff0c;引用类型的变量…

数据库面试题

数据库基础知识 什么是MySQL&#xff1f; MySQL是一个数据库管理系统。 数据库是数据的结构化集合。 MySQL数据库是关系型的。 关系数据库将数据存储在单独的表中&#xff0c;而不是将所有数据放在一个大仓库中。数据库结构被组织成针对速度进行了优化的物理文件。具有对象&a…

第五届字节跳动青训营 前端进阶学习笔记(一)前端和HTML

文章目录1.前言2.什么是前端3.前端需要关注哪些问题4.HTML语法5.HTML标签6.HTML中的内容划分7.总结这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天 1.前言 本次课程主要介绍了&#xff1a; 前端要解决的基本问题HTML的基本定义和语法为什么要语义化和怎么做的语义化 …

深度学习——梯度

一、初识梯度 import torch x torch.arange(4.0) print(x) x.requires_grad_(True) y 2 * torch.dot(x, x) #torch.matmul(x, x) print(y) y.backward() print(x.grad) print(x.grad 4*x)输出&#xff1a; tensor([0., 1., 2., 3.]) tensor(28., grad_fn<MulBackward0&g…

批次标准化Batch Normalization

批次标准化Batch Normalization 目录 批次标准化Batch Normalization 为什么需要批次标准化 产生上述变化趋势不匹配的原因 处理方法 处理方法的优化 Batch Normalization的引出Testing时的相应处理 批次标准化Batch Normalization 第五节 2021 - 类神经网络训练不起来怎么…

从【卡内基梅隆大学机器人概论课】认识机器人学科需要哪些技能栈

闲来无事&#xff0c;找到了卡内基梅隆大学机器人研究所&#xff0c;看了下他们机器人的教育&#xff0c;不得不感慨相比我们学校先进了不知多少&#xff0c;是真真切切让同学们去了解机器人的方方面面&#xff0c;下面摘自它们的概论作业。 作业0 作业1 作业2 作业3 作业4 作…

LeetCode 79 单词搜索 | 解题思路分享

原题链接&#xff1a;79. 单词搜索 题目难度&#xff1a;中等 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的…