Java--Big Number操作(BigInteger类和BigDecimal类)_java big number-程序员宅基地

BigInteger类

java.math.BigInteger 类的使用场景是大整数操作。它提供类似所有Java的基本整数运算符和java.lang.Math中的所有相关的方法的操作,如+、-、*、/、%、&、|、mod、>>、<<,以及min()、max()等等。只不过它操作的整数都是极其大的,为科学计算提供了很大的便利。比如下面的代码就是计算20000000000000000000 * 30000000000000000000,利用BigInteger可以很容易的计算出来结果。

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String a = in.nextLine();
        String b = in.nextLine();
        BigInteger biga = new BigInteger(a);
        BigInteger bigb = new BigInteger(b);
        BigInteger result = biga.multiply(bigb);
        System.out.println(result);
    }
}

//输入
30000000000000000000
20000000000000000000
//输出
600000000000000000000000000000000000000

构造函数

BigInteger提供了6个构造函数,方便取到一个大数。上方的代码就是利用形参是String的构造函数来将传入的字符串转换为BigInteger类型。常用的构造方法如下:

  1. BigInteger(String val):将10进制字符串转换为BigInteger
  2. BigInteger(byte[] val):将只含有0和1的bite[]数组转换为2进制表示的BigInteger值
  3. BigInteger(int numBits, Random rnd):构造一个随机生成的BigInteger,均匀分布在范围0到 (2^numBits - 1)
  4. BigInteger(String val, int radix):将字符串转换为指定进制的BigInteger

类方法

BigInteger的类方法有40多个,覆盖了简单四则运算、位运算、科学计算、哈希运算、类型转换等。下面是最最常用的方法:

  1. BigInteger abs() :求绝对值
  2. BigInteger add(BigInteger val):计算和
  3. BigInteger subtract(BigInteger val):计算差
  4. BigInteger multiply(BigInteger val):计算积
  5. BigInteger divide(BigInteger val):计算商
  6. BigInteger pow(int exponent) :计算幂
  7. BigInteger remainder(BigInteger val):计算余数
  8. BigInteger max(BigInteger val):返回较大值
  9. BigInteger min(BigInteger val):返回较小值

BigDecimal类

java.math.BigDecimal 类提供用于算术,刻度操作,舍入,比较,哈希算法和格式转换操作。该类的使用范围是小数运算。我们都知道Java的float和double是浮点数,直接进行比较操作、运算操作都会有误差,BigDecimal就不会出现这种情况。

toString()方法提供BigDecimal的规范表示。它使用户可以完全控制舍入行为。提供用于操作BigDecimal规模两种类型的操作:

  • 缩放/舍入操作
  • 小数点移动操作。

日常Coding中我还没用到过这个类,需要使用的时候再查看文档吧。不过这个类的使用方法应该和BigInteger类类似,只不过支持小数操作,在方法头中会多一些形参来控制精度或其他控制。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34420530/article/details/82818955

智能推荐

AndroidStudio——入门1_androi studio讲解-程序员宅基地

文章浏览阅读225次。转自文章《Android Studio2.0 教程从入门到精通Windows版 - 入门篇》http://www.open-open.com/lib/view/open1468121363300.html开发第一应用可以开发属于自己的应用,是否有点小激动?好吧!让我们开始,首先点击Start a new Android Studio Project创建工程:接下来需要输入应用名称(第一个字母要大写..._androi studio讲解

实在没货,简历(软件测试)咋写?-程序员宅基地

文章浏览阅读856次,点赞21次,收藏15次。简历咋写?首先你要知道简历的作用。简历的作用是啥呢?如何让HR看你一眼,便相中你的简历,实现在众多简历中“脱颖而出”,这当然需要搞清楚简历的核心内容。所以本文的文章结构就出来了,一起看下:1)简历内容该该怎么写2)简历的素材该如何找3) 成功的简历模板分享【重要】4)简历投递和调整的建议一份完整的软测简历包括7大块,其中重点的三部分内容分别为:1)教育经历2)专业技能3)项目经验下面每项展开说明一下。基本信息主要是介绍个人真实的基础信息,方便HR初步了解你。

【Android】AndroidStudio实现图片的自动轮播ViewFlipper_android studio轮播图-程序员宅基地

文章浏览阅读7.3k次,点赞14次,收藏109次。AndroidStudio2.2实现图片的自动轮播ViewFlipper_android studio轮播图

使用Tesseract-OCR训练文字识别记录_tesseract ocr list-程序员宅基地

文章浏览阅读4.9k次。时间:2016-11-14 21:40 来源:清屏网 作者:那一抹忧伤 点击:133次Tesseract官方文档页面https://github.com/tesseract-ocr/tesseractjTessBoxEditor官方文档页面http://vietocr.sourceforge.net/training.html[root@doc_tesseract ocr list

网安快速入门(新人发稿,如有失误多多见谅)-程序员宅基地

文章浏览阅读962次,点赞18次,收藏16次。黑客分为三种,分别为白帽,灰帽和黑帽白帽黑客研究黑客技术,但研究目的不是为了攻击;这类人多为网络安全人员。灰帽黑客此类人员大多数是计算机爱好者,进行无目的的攻击计算机常用的进制转换有如下四种二进制:逢2进1;十进制:逢10进1;八进制:逢8进1;十六进制:逢16进1;

timescaledb源码安装_postgresql was built without openssl support, whic-程序员宅基地

文章浏览阅读3.1k次。因为postgresql是源码安装的,所以timescaledb也得源码安装。timescaledb 0.12.1版本,解压后如下[root@server4 timescaledb-0.12.1]# lsbootstrap build CMakeLists.txt docs NOTICE scripts src timescaledb..._postgresql was built without openssl support, which timescaledb needs for fu

随便推点

Hibernate源码分析_hibernate 源码类关系-程序员宅基地

文章浏览阅读7.5k次。这段时间本人利用空闲时间解读了一下Hibernate3的源码,饶有收获,愿与大家共享。 废话不多说,首先我们先对Hibernate有一个大致的印象l 设计模式Hibernate=监听器,实际上是回调l Hibernate3支持拦截器 Hibernate配置方面的大原则:l bhn.xml文件所有配置都是描述本实体,除了cascade描述级联,即如何将本实体的操作(_hibernate 源码类关系

react native 如何上传文件/图片到 strapi数据库_react-native 上传-程序员宅基地

文章浏览阅读1.4k次,点赞40次,收藏20次。折腾了一段时间,发现在strapi上传文件是出名的困难,而且官方文档上传文件教程也没有针对react native的部分,仅仅通过它的nodejs和browser代码在rn中套用行不通,其中还有些细节的纰漏。开始前请确保自己已经按照官方教程安装好strapi提示:以下是本篇文章正文内容,下面案例可供参考。_react-native 上传

DDos防护系列之2--DDos防御策略_ds防护策略-程序员宅基地

文章浏览阅读3k次。前一篇文章讲述了什么是DDos,DDos的种类等。这一节我们讲述DDos的防御策略。我们按照DDos的攻击类型来讲解每一种类型对应的防御策略。一、DDos攻击类型有以下一些类型,但不限于:畸形报文、传输层(4层)DDoS攻击、Web应用DDoS攻击、DNS DDoS攻击、连接型DDoS攻击。1. 畸形报文每中报文都有相对应的标准格式,如果不符合这种格式就属于畸形报文,我们可_ds防护策略

EasyClick 易点云测自动化测试入门到精通_冉遗鱼图色插件-程序员宅基地

文章浏览阅读2.2k次。EasyClick 易点云测自动化测试入门到精通_冉遗鱼图色插件

JDBC访问数据库的步骤,以及三种数据库的驱动和连接字符串_goldendb连接串如何写-程序员宅基地

文章浏览阅读1k次。一、JDBC访问数据库的具体步骤:1.导入数据库的驱动,加载具体的驱动类2.与数据库建立连接3.发送sql语句,执行4.处理结果集(查询)**二、三种数据库的具体驱动:** 1.Oracle:驱动jar:ojdbc-x.jar具体驱动类:Oracle.jdbc.OracleDriver连接字符串:jdbc:oracle:thin:@localhost:1521:OR......_goldendb连接串如何写

并发、消息队列、缓存_消息队列与缓存的区别-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏7次。"并发"会引发关于"顺序"的问题,及如何能够在使用高并发提高效率的同时,又在一定程度上能够控制/维持一定的操作顺序。更广泛的,有关并发的"锁"操作,也都会围绕同样的思路来解决问题。没有银弹。想要在维持并发的同时,通过什么魔法来同时维持顺序是不可能的。最基本的核心想法是,将并发的操作变为串行,那么操作也就自然会有了顺序。这是一个看似有些矛盾的解决方案。并发的目的不就是为了提高效率么?!如果将并..._消息队列与缓存的区别

推荐文章

热门文章

相关标签