Java的Math包中提供了两个类用于对大数进行操作:

BigInteger类,用于大整数的操作

BigDecimal类,用于大的小数操作

BigInteger类

Java中的基本类型中,表示整数的有short, int和long,其中最大的long也只有64位,能表示的最大正整数是9223372036854775807,如果超过了这个数就无法使用基本数据类型表示了。

而BigInteger类把数据以字符串的形式写入即计算。并且由于使用它需要创建对象,而且Java中没有提供运算符的重载,所以不能直接使用+ - * /这些运算符直接运算。需要进行运算操作时,可以使用该类提供的方法进行。

BigInteger类的二元运算需要两个操作数都为BigInteger,通常前一个操作数调用方法,后一个操作数作为参数。常用的方法如下:

public BigInteger(String val); // 构造方法,将一个字符串变为 BigInteger类型的数据

public BigInteger add(BigInteger val) // 加法,结果用BigInteger类型返回

public BigInteger subtract(BigInteger val) // 减法

public BigInteger multiply(BigInteger val) // 乘法

public BigInteger divide(BigInteger val) // 除法

public BigInteger max(BigInteger val) // 返回最大值

public BigInteger min(BigInteger val) // 返回最小值

// 带余数的除法操作,数组的第一个元素表示除法的商,第二个元素表示除法的余数

public BigInteger[] divideAndRemainder(BigInteger val)

示例

import java.math.BigInteger;

public class Test {

public static void main(String[] args) {

// 用来保存 两个大数

BigInteger b1 = new BigInteger("987654321098765432109876543210");

BigInteger b2 = new BigInteger("123456789012345678901234567890");

// 两个大数的运算(加减乘除、最大值、最小值)

System.out.println("b1 + b2 = " + b1.add(b2)); // 加

System.out.println("b1 - b2 = " + b1.subtract(b2)); // 减

System.out.println("b1 * b2 = " + b1.multiply(b2)); // 乘

System.out.println("b1 / b2 = " + b1.divide(b2)); // 除

System.out.println("max: " + b1.max(b2)); // 最大值

System.out.println("min: " + b1.min(b2)); // 最小值

System.out.println();

// 除法操作,数组的第一个元素是除法的商,第二个元素是除法的余数

BigInteger[] bArr = b1.divideAndRemainder(b2);

System.out.println("商:" + bArr[0]);

System.out.println("余数:" + bArr[1]);

}

}

BigDecimal类

BigDecimal是为了解决小数的精度问题而使用的。它也是使用字符串进行写入。

BigDecimal类的常用方法与BigInteger类相同,只不过操作数变成了BigDecimal类。

示例:

import java.math.BigDecimal;

public class Test {

public static void main(String[] args) {

// 用来保存 两个小数

BigDecimal b1 = new BigDecimal("1.00");

BigDecimal b2 = new BigDecimal("0.30");

// 两个小数的运算(加减乘除、最大值、最小值)

System.out.println("b1 + b2 = " + b1.add(b2)); // 加

System.out.println("b1 - b2 = " + b1.subtract(b2)); // 减

System.out.println("b1 * b2 = " + b1.multiply(b2)); // 乘

// 除法,开始四舍五入模式,否则可能会报 ArithmeticException

System.out.println("b1 / b2 = " + b1.divide(b2, BigDecimal.ROUND_HALF_UP));

System.out.println("max: " + b1.max(b2)); // 最大值

System.out.println("min: " + b1.min(b2)); // 最小值

System.out.println();

// 除法操作,数组的第一个元素是除法的商,第二个元素是除法的余数

BigDecimal[] bArr = b1.divideAndRemainder(b2);

System.out.println("商:" + bArr[0]);

System.out.println("余数:" + bArr[1]);

}

}

java大数 bigin_Java大数操作相关推荐

  1. java利用实现大数阶乘(三种方法)

    java利用实现大数阶乘(三种方法) 法一: for循环 import java.math.BigInteger; import java.util.Scanner; public class das ...

  2. 历届试题 矩阵翻硬币 蓝桥杯 大数开方 大数相乘

    历届试题 矩阵翻硬币   时间限制:1.0s   内存限制:256.0MB 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬 ...

  3. java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

    http://langgufu.iteye.com/blog/2107023 java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果 ...

  4. java对cookie的操作

    原文:http://www.cnblogs.com/muzongyan/archive/2010/08/30/1812552.html java对cookie的操作比较简单,主要介绍下建立cookie ...

  5. java大文件读写操作

    转载自:http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数 ...

  6. java对文本文件进行操作:读取、修改、添加、删除、重命名等

    java对文本文件进行操作:读取.修改.添加.删除.重命名等 Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 .字符类型的输入和输出流. IO是指对数据流的输入和输出 ...

  7. JAVA中用 SQL语句操作小结

    1.添加记录(INSERT) 使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为: INSERT INTO 表名 [(字段名1,字段名2-)] VALUES (值1, ...

  8. JAVA API实现HDFS操作(二)操作函数

    说明:在IDEA集成环境中利用JAVA API实现目录的创建.文件的创建.文件的上传和下载.文件的查看.文件删除.文件的编辑等操作.以下代码均创建在my.dfs包下 创建文件夹 在hdfs系统的根目录 ...

  9. 用Java API实现HDFS操作(三)问题汇总

    说明:整理博主用Java API实现HDFS操作时遇到的问题 问题 为搭建分布式操作环境–在ubuntu16中安装IDEA2021.tomcat9.0.hadoop2.7,建议分配磁盘空间30G及以上 ...

最新文章

  1. [Linux] 029 脚本安装包
  2. bootstrap 标题居中加颜色_BootStrap从基础到项目实战_第1季_03章_01_CSS样式之栅格布局...
  3. JTable动态显示隐藏列
  4. 浅谈构建 apache 2 虚拟主机[zt]
  5. 一维信号双边滤波器_定义图上的各向异性、动态、频谱和多尺度滤波器
  6. python中np没有定义_python中的np.empty_python – np.empty,np.zeros和np.one
  7. jax-rs jax-ws_如何以大数据的JAX-RS响应的形式将JPA结果流化/序列化
  8. MTK平台Android4.4 拍照默认图片格式修改
  9. HTML5之本地存储localstorage
  10. django 1.11.16之环境搭建
  11. linux 子进程exit6,linux 惊群有关问题
  12. Dataset:智慧中国杯—全国大数据创新应用大赛七个数据集简介、下载之详细攻略
  13. 自然语言处理入门——RNN架构解析
  14. 函数发生器的使用方法
  15. python_分类_category方法
  16. 统计年鉴 付费下载 夏泽网
  17. AtCoder Beginner Contest 209 D - Collision「黑白染色」
  18. 说说qwerty、dvorak、colemak三种键盘布局
  19. 阅读并记录别人的23岁
  20. 敏感关键词 词库_【店铺技能】1688会员新手如何去优化关键词!

热门文章

  1. 微软分拆小冰业务并独立发展,沈向洋任董事长
  2. 寒武纪与华为海思分庭抗礼:中立芯片公司的成人礼
  3. 新的边缘架构兴起,Serverless 的发展方向在哪?
  4. 盘点 12 款让开发效率“飞起”的 VS Code 插件
  5. 程序员该如何进行 SQL 数据库的优化?
  6. Google 是如何做 Code Review 的?| 原力计划
  7. 横扫阿里、滴滴、美团后,阿里程序媛整理出这份厚厚的面经!
  8. 我在 1969 年写代码
  9. 2019 年,开发者如何占领快应用技术风向的高地?
  10. BAT 七年经验,却抵不过外企面试的两道算法题?