JAVA 大数操作及小数操作(BigInteger类、BigDecimal类)

一、BigInteger
大数操作,long的范围是有限的
如:111111111111111111111111111111111111
long保存不了,只能用大数解决

import java.math.BigInteger;
import java.util.Scanner;

public class Main { 
	public static void main(String[] args)  {
          Scanner in=new Scanner(System.in);
          int i=0;
          
          //创建方式1,需要输入时
          BigInteger b1 = new BigInteger("0");
          b1=in.nextBigInteger();
          
          //创建方式2,不需要输入时
          BigInteger b2 = new BigInteger("1111111111111111111111111111");
          
          b1.add(b2);         //b1+b2 加
          b1.subtract(b2);    //b1-b2 减
          b1.multiply(b2);    //b1*b2 乘
          b1.divide(b2);      //b1/b2 除
          b1.max(b2);         //取b1和b2中较大的那一个
          b1.min(b2);         //取b1和b2中较小的那一个
          
          // 除法操作,数组的第一个元素是除法的商,第二个元素是除法的余数
          BigInteger[] bArr = b1.divideAndRemainder(b2);
          System.out.println("商:" + bArr[0]);
          System.out.println("余数:" + bArr[1]);
          
          //将long 或 int型转换为BigInteger型
          //因为long和int不能直接和BigInteger进行运算
          BigInteger b3 =BigInteger.valueOf(i);
          
          BigInteger gcd = x.gcd(y);	//BigInteger自带的求最大公约数的方法
	}
}

二、BigDecimal
小数操作,double的范围是有限的
如:0.111111111111111111111111111111111111
double保存不了,只能用小数解决

import java.math.BigDecimal;
import java.util.Scanner;

public class Main { 
	public static void main(String[] args)  {
          Scanner in=new Scanner(System.in);
          double i=1.32;
          
          //创建方式1,需要输入时
          BigDecimal b1 = new BigDecimal("0");
          b1=in.nextBigDecimal();
          
          //创建方式2,不需要输入时
          BigDecimal b2 = new BigDecimal("0.1111111111111111111111111111");
          
          b1.add(b2);         //b1+b2 加
          b1.subtract(b2);    //b1-b2 减
          b1.multiply(b2);    //b1*b2 乘
          
          // 除法,开始四舍五入模式,否则可能会报 ArithmeticException
          b1.divide(b2, BigDecimal.ROUND_HALF_UP);      
          
          b1.max(b2);         //取b1和b2中较大的那一个
          b1.min(b2);         //取b1和b2中较小的那一个
          
          // 除法操作,数组的第一个元素是除法的商,第二个元素是除法的余数
          BigDecimal[] bArr = b1.divideAndRemainder(b2);
          System.out.println("商:" + bArr[0]);
          System.out.println("余数:" + bArr[1]);
          
          //将float 或double型转换为BigDecimal型
          //因为float和double不能直接和BigDecimal进行运算
          BigDecimal b3 =BigDecimal.valueOf(i);
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值