基础算法 —— 高精度计算 —— Java 大数类
【概述】
在 C++ 中数据类型的长度最多能到 64 位,一旦超出这个位数,就要用数组进行模拟计算,即高精度算法
而在 Java 中有两个类:BigInteger、BigDecimal 分别表示大整数类和大浮点数类,其理论上能表示无限大的数,只要计算机内存足够大。
这两个类都是 Number 类的子类,但存放在 java.math.* 包中,因此每次使用必须在开头处引用该包。
【常量】
BigInteger 的 ONE、ZERO、TEN 分别代表 1、0、10
BigInteger.ZERO //大整数0
BigInteger.ONE //大整数1
BigInteger.TEN //大整数10
而在 BigDecimal 中除了以上三个常量外还有8个关于舍入的常量:ROUND_UP、ROUND_DOWN、ROUND_CEILING、ROUND_FLOOR、ROUND_HALF_UP、ROUND_HALF_DOWN、ROUND_HALF_EVEN、ROUND_UNNECESSARY。
【声明赋值】
基本类型的定义:
BigInteger name = new BigInteger(String) ;//参数是字符串
BigInteger name = BigInteger.valueOf(123); //参数是 int、long
BigDecimal name = new BigDecimal(String) ;//参数是字符串
BigDecimal name = BigDecimal.valueOf(123.45); //参数是 float、double
【输入框架】
Scanner input = new Scanner(System.in);
while(input.hasNext()){ BigInteger a;a = input.BigInteger();System.out.println(a);
}
【基本用法】
1.四则运算
BigInteger a = new BigInteger.valueOf(10);
BigInteger b = new BigInteger.valueOf(10);
BigInteger res new BigInteger();
res=a.add(b); //加法
res=a.subtract(b); //减法
res=a.divide(b); //除法
res=a.multiply(b); //乘法
2.比较大小
BigInteger a = new BigInteger.valueOf(10);
BigInteger b = new BigInteger.valueOf(10);
a.equals(b); //如果a、b相等返回true否则返回false
a.comareTo(b); //a小于b返回-1,等于返回0,大于返回1
3.常用方法
BigInteger a = new BigInteger.valueOf(10);
BigInteger b = new BigInteger.valueOf(15);
BigInteger mod = new BigInteger.valueOf(10007);
BigInteger res=new BigInteger();
res=a.mod(mod); //求余
res=a.gcd(b); //求最大公约数
res=a.max(b); //求最大值
res=a.min(b); //求最小值
res=a.modPow(b,mod); //求(a^b)%mod
基础算法 —— 高精度计算 —— Java 大数类相关推荐
- 基础算法 —— 高精度计算
[概述] 利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的尾数可达到几十甚至几百位,虽然计算机本身精度足够高,但受硬件限制,往往达不到实际问题所要求的精度,因此我们用程序设 ...
- java大数类阶乘_Java中的大数阶乘
java大数类阶乘 It is not possible to store factorial for large number like 50 into inbuilt data types lik ...
- Java 大数类BigInteger与BigDecimal详细介绍(配蓝桥杯例题讲解)
文章目录 1.基本函数 1.1 java.math.BigInteger.valueOf(long val) 2.运算法则 2.1 基本运算 2.2 compareTo(BigInteger othe ...
- java 大数类_Java大数类介绍
java能处理大数的类有两个高精度大整数BigInteger和高精度浮点数BigDecimal,这两个类位于java.math包内,要使用它们必须在类前面引用该包:import java.math.B ...
- (部分转载,部分原创)java大数类(2)
NYOJ 773 开方数 http://acm.nyist.net/JudgeOnline/problem.php?pid=773 1 import java.util.Scanner; 2 3 p ...
- Java程序设计语言基础05:Java的类和对象
目录 1. 类的定义与组成 1.1 类的定义 2.2 类的使用 2. 类.对象和引用 2.1 类 2.2 对象 2.3 引用 3. 类的知识扩展 3.1 成员变量初始值 3.2 在类中定义自己的引用 ...
- 多校第六场 HDU 4927 JAVA大数类+模拟
HDU 4927 题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1−ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小 ...
- 基础算法 —— 高精度计算 —— 高精度加法
[算法分析] 输入两个数到两个变量中,然后用赋值语句求他们的和,输出. 但是,我们知道,在C++中任何数据类型都有一定表示范围.当两个被加数很大时,上述算法显然不能求出精确解,因此寻求另外一种方法. ...
- 智力大奖赛 【数较大 】+水题+java大数类
输入 只有一行,有一个整数N,表示大三角形的层数(N<=45000) 输出 有两行, 第一行只有一个数,表示小三角形的个数: 第二行也只有一个数,表示能量棒的个数. 分析:会等差数列的前n项和公 ...
最新文章
- 淘宝装修:第一日 —— 图片轮播
- spring源码深度解析—Spring的整体架构和环境搭建
- 【渝粤教育】电大中专建设工程法规 (2)作业 题库
- sp烘焙流程_次世代86机甲战神制作全流程
- [css] 如何消除transition闪屏?
- koa2 mysql增删改查_koa2对mongodb的增删改查
- oracle imp导入库到指定表空间
- 如何使用scss/sass
- 从研发角度谈存储技术的学习
- Linux 下 4 种实时监控日志文件的方法,你都会用吗?
- paip.提升用户体验---c++ QLabel标签以及QLineEdit文本框控件透明 设置
- excel去掉一行文字中的逗号合并在一起_这30个Excel实用技巧,效率大神都忍不住收藏了。...
- Task02:学习笔记文本预处理;语言模型;循环神经网络基础
- Django开源项目
- 1660_MIT 6.828 JOS初始化boot_alloc的初步实现
- 【疫情是否会对2021届就业形势产生影响】听说连21届都要跟20届毕业生“抢饭碗”了?
- YUV图像格式进行的ALPHA BLEND操作
- 对于网站设计和开发公司日益增长的需求
- 正点原子【STM32-F407探索者】--UART_Printf
- UTONMOS:如何看待初期的元宇宙?
热门文章
- HTML鼠标点击文字语音播放,10款jQuery+HTML5实现的鼠标点 经过播放音频
- 7805输入电流有要求吗_【电磁炉技术】电磁炉常用元器件的使用要求和维修事项...
- 大厂面试:一个四年多经验程序员的BAT面经
- 再现暴力裁员!患病员工被关小黑屋,摄像头监控,工作量超其他人!
- 我要带徒弟学写JAVA架构,引路架构师之路
- JEECG 命名规范
- RedHat系列软件管理(第二版) --源码包安装
- 【C#学习笔记】函数调用
- 关于CSS的碎片学习
- Apple Cached Service 导致 iPhone app store无法下载程序