JAVA BigInteger和BigDecimal类常用方式

BigInteger

BigInteger是用来计算超大的整型数据的。

这个类计算出的所有数据只会是整型

    public static void main(String[] args) {
    	//两种创建方式
    	BigInteger ten = new BigInteger("10");
    	BigInteger two = new BigInteger("2");
    	BigInteger three = new BigInteger("3");
    	//只能创建某几个数
    	BigInteger one = BigInteger.TEN;
    	
    	BigInteger res;
    	//加法
    	res = ten.add(two);
    	//res =10+2=12
    	
    	//减法
    	res = ten.subtract(two);
    	//res = 10-2=8;
    	
    	//乘法
    	res = ten.multiply(two);
    	//res = 10*2=20;
    	
    	//除法
    	res = ten.divide(two);
    	// res = 10/2 =5 //小数向上取整
    	
    	//求余
    	res = ten.mod(three);
    	// res = 10%3 =1
    	
    	//最小值Min、最大值Max、就不演示了
    	
    	//求次方
    	res = ten.pow(3);
    	//res = 10*10*10//10的三次方
    }

BigDecimal

可以说是一个可以控制精确度的BigInteger

可以按照不同的方式去求精准度

使用不同的方式去求他的精度

BigDecimal small = new BigDecimal("1.1234567");
四舍五入方式
//small的精确到小数点5位
    	//ROUND_HALF_UP 这个参数代表以四舍五入的方式进行精确
    	res = small.setScale(5,BigDecimal.ROUND_HALF_UP);
    	//res = 1.12346
向下取精确度的方式(直接截断)
//ROUND_DOWN 向下取整、、直接截断第5位,不管后面是几
    	res = small.setScale(5,BigDecimal.ROUND_DOWN);
    	//res = 1.12345
向上取精确度的方式 ,,后面的一位只要有数就进位
//ROUND_UP 向上取整,比如精确到第3位,只要原来第三位后面有数,就默认进位
    	res = small.setScale(3,BigDecimal.ROUND_UP);
    	//res = 1.124
    	//不用进位
    	res = small.setScale(7,BigDecimal.ROUND_UP);
    	//res = 1.1234567

BIgDecimal的其他四则运算与BigIntegr一致

主要是除法

可以除尽的除法,运算没问题

        BigDecimal ten = new BigDecimal("15");
    	BigDecimal two = new BigDecimal("10");
    	
    	BigDecimal res = ten.divide(two);
    	//res = 1.5

如果遇见除不尽的,结果为无限小数一定要确定精确度

否则会报错

        BigDecimal ten = new BigDecimal("10");
    	BigDecimal three = new BigDecimal("3");
    	
    	//四舍五入保留3位小数
    	BigDecimal res = ten.divide(three,3,BigDecimal.ROUND_HALF_UP);
    	System.out.println(res);

另外需要注意的

        double ten =10.123;
    	BigDecimal t = new BigDecimal(ten);
    	System.out.println(t);

结果不是10.123

而是。10.1229999999999993320898283855058252811431884765625

因为,double类型在java内存中存储的就是这样的,只是我们平时看不出来

,转换成BigDecimal时把他的原型转换了出来。

需要注意........想要原来的值可以先转换成String

double ten =10.123;
    	BigDecimal t = new BigDecimal(String.valueOf(ten));
    	System.out.println(t);

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNbrightness

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值