java BigInteger类和BigDecimal类大数字计算

BigInteger和BigDecimal是Java中用于处理大数和高精度计算的类,可以进行任意精度的整数和浮点数运算。BigInteger提供了加、减、乘、除、取余等操作,而BigDecimal则在BigInteger的基础上支持了小数运算,并且包含舍入模式。这两个类在处理超过基本数据类型范围的数值时非常有用,避免了精度丢失的问题。
摘要由CSDN通过智能技术生成

BigInteger类

不可变的任意精度整数,在实际操作中,如果处理的数据要比Integer数据类型大就无能为力,因此就有了BigInteger类来处理更大的数字,在运算中 BigInteger 类型可以准确地表示任何大小的整数值。BigInteger类也封装类许多操作,例如绝对值,相反数,是否为素数等操作 。

创建BigInteger对象

BigInteger也有好几种构造方法,最有效的和最常用的就是以字符串的形式创建处理。

BigInteger b=new BigInteger("3499");

BigInteger常用方法

方法名说明
abs()返回BigInteger的绝对值
add()做加法运算
subtract()做减法运算
multiply()做乘法运算
negate()相反数运算
divide()做除法运算
remainder()取余运算
divideAndRemainder()做除法运算,返回数组,第一个为商,第二个为余数
pow()做次方运算
shiftLeft()向左移多少位
shiftRight()向右移多少位
and()做与运算
or()做或运算
compareTo()两个BigInteger的比较运算
equals()与object进行比较,相等返回true,反之
min()返回两个BigInteger最小值
max()返回两个BigInteger的最大值

例子

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

public class dome2{
 	public static void main(String[] args) {
 		Scanner sc=new Scanner(System.in);
 		BigInteger b=new BigInteger(String.valueOf(sc.nextInt()));
 		//加法运算
 		System.out.println(b.add(new BigInteger("10")));
 		//做减法运算
 		System.out.println(b.subtract(new BigInteger("5")));
 		//做除法运算
 		System.out.println(b.divide(new BigInteger("2")));
 		//做乘法运算
 		System.out.println(b.multiply(new BigInteger("2")));
 		//取余运算
 		System.out.println(b.remainder(new BigInteger("4")));
 		//相反数运算
 		System.out.println(b.negate());
	}
}

输入20的结果
30
15
10
40
0
-20

BigDecimal类

BigDecimal类与BigInteger类差不多,都是求大数字的运算,BigDecimal只不过加入了小数的概念,所以它比float和double类型大得多,支持任何精度的浮点数。

BigDecimal构造方法

BigDecimal也有许多构造方法,也支持直接从基本数据类型传入,例如int,double,float,long,还可以char数组,还可以传入BigInteger对象。

常用的构造方法:

BigDecimal(double val); //将双精度型转换为 BigDecimal 类型。
BigDecimal(String val);将字符串形式转换为 BigDecimal 类型。

BigDecimal方法:

BigDecimal与BigInteger类的方法差不多类似,方法名也相同,在有些方面增添了舍入的方法。


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

public class dome2{
 	public static void main(String[] args) {
 	 Scanner sc=new Scanner(System.in);
 	 BigDecimal b=new BigDecimal(sc.nextDouble());
 	 //加法运算
 	 System.out.println(b.add(new BigDecimal(3.0)));
 	 //减法运算
 	 System.out.println(b.subtract(new BigDecimal(9.1)));
 	 //乘法运算
 	 System.out.println(b.multiply(new BigDecimal(2.5)));
 	 //除法运算
 	 System.out.println(b.divide(new BigDecimal(5.0)));
 	 //除法运算,保留小数点后4位(先了解即可)
 	 System.out.println(b.divide(new BigDecimal(3.4),4,BigDecimal.ROUND_HALF_UP));
	}
}

输入40.0的结果
43
30.9000000000000003552713678800500929355621337890625
100.0
8
11.7647

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值