前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java--Big Number操作(BigInteger类和BigDecimal类)

Java--Big Number操作(BigInteger类和BigDecimal类)

作者头像
SuperHeroes
发布2019-03-12 14:39:29
1K0
发布2019-03-12 14:39:29
举报
文章被收录于专栏:云霄雨霁云霄雨霁

BigInteger类

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

代码语言:javascript
复制
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类类似,只不过支持小数操作,在方法头中会多一些形参来控制精度或其他控制。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/09/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BigInteger类
  • 构造函数
  • 类方法
  • BigDecimal类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档