23、大数字运算(BigInteger、BigDecimal)和数据格式化(NumberFormat、DecimalFormat)

一 大数字运算

在Java中提供了大数字的操作类,即BigInteger与BigDecimal,这两个类用于高精度计算,其中BigInteger是针对大整数的处理类,而BigDecimal则是针对大小数的处理类

1.1 BigInteger

BigInteger类型的数字范围较Integer类型的数字范围要大的多。BigInteger支持任意精度的整数,也就是说在运算中BigInteger类型可以准确的表示任何大小的整数值而不会丢失任何信息

 

在BigInteger类中封装了多种操作,除了基本的加、减、乘、除之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作

 

使用BigInteger类,可以实例化一个BigInteger对象,并自动调用相应的构造函数,BigInteger类有多种构造函数,如下将字符串转成BigInteger

public BigInteger(String val)

 

例如,将字符串2转换成BigInteger类型

BigInteger towInstance = new BigInteger("2");

 

一旦创建了对象实例,就可以调用BigInteger类中的一些方法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、绝对值等操作。

 

1.1.1 BigInteger常用方法

如下,列举了BigInteger类中常用的几种运算方法

  • BigInteger add(BigInteger val):加法操作

  • BigInteger subtract(BigInteger val):减法操作

  • BigInteger multiply(BigInteger val):乘法操作

  • BigInteger devide(BigInteger val):除法操作

  • BigInteger remainder(BigInteger val):取余操作

  • BigInteger[] devideAndRemainder(BigInteger val):用数组返回余数和商,结果数组中第一个值为商,第二个值为余数

  • BigInteger pow(int exponent):进行参数exponent次方操作

  • BigInteger negate():取相反数

  • BigInteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作

  • BigInteger shiftRight(int n):将数字右移n位,如果n为负数,做左移操作

  • BigInteger and(BigInteger val):做与操作

  • BigInteger or(BigInteger val):做或操作

  • int compareTo(BigInteger val):做数字比较操作

  • boolean equals(Object x):当参数x是BigInteger类型的数字并且数值相等时,返回true

  • BigInteger min(BigInteger val):返回最小的数值

  • BigInteger max(BigInteger val):返回最大的数值

 

如下面一段代码

package com.bianjf.testbignumber;

import java.math.BigInteger;

public class BigIntegerDemo {
    public static void main(String[] args) {
         BigInteger bigInstance = new BigInteger("4");//实例化一个大数
         //该大数+2操作
         System.out.println("加法操作:" + bigInstance.add(new BigInteger("2")));
         //该大数-2操作
         System.out.println("减法操作:" + bigInstance.subtract(new BigInteger("2")));
         //该大数x2操作
         System.out.println("乘法操作:" + bigInstance.multiply(new BigInteger("2")));
         //该大数/2操作
         System.out.println("除法操作:" + bigInstance.divide(new BigInteger("2")));
         //该大数/3的商
         System.out.println("取商:" + bigInstance.divideAndRemainder(new BigInteger("3"))[0]);
         //该大数/3的余数
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值