概述
BigInteger:超级大的数据运算,不能用常规的加减乘除来计算,是超过long取值范围的整数,封装成BigInteger类型的对象。
BigInteger b1=new BigInteger("1246546489791324646473131654124564");
BigInteger b2=new BigInteger("47974966469799464649734487431");
b1.add(b2);//加法b1+b2
b1.subtract(b2);//减法b1-b2
b1.multiply(b2)//乘法b1*b2
b1.divide(b2)//除法b1/b2
BigDecimal:超级大型的浮点数据,提供高精度的浮点运算。
System.out.println(0.09 + 0.01);//0.09999999999999999 结果不是0.1
System.out.println(1.0 - 0.32);//0.6799999999999999 结果不是0.68
造成以上结果的原因是:计算机二进制中,表示浮点数不精确造成的,一般都会损失精度,所以BigDecimal类型的对象就是提供高精度的。
BigDecimal b1=new BigDecimal("0.09");
BigDecimal b2=new BigDecimal("0.01");
b1.add(b2);//加法b1+b2
b1.subtract(b2);//减法b1-b2
b1.multiply(b2)//乘法b1*b2
由于BigDecimal对象的数据是浮点型,会有两者相除的结果为循环小数,故由该包装类对象所提供的方法相除的方法需要自己定义保留小数的模式。
divide(BigDecimal divisor, int scale, int roundingMode)
int scale:保留几位小数
int roundingMode:保留模式
BigDecimal提供的部分常用的静态保留模式:
static int ROUND_UP;//在保留的最后一位小数之后的数无论是多少,都向上+1(保留4位小数,4.25631结果为:4.2564)
static int ROUND_DOWN;//在保留的最后一位小数之后的数无论是多少,都舍去(保留4位小数,4.25639结果为:4.2563)
static int ROUND_HALF_UP;//在保留的最后一位小数之后的数,>= 0.5 向上+1,否则直接舍去(保留4位小数,0.15265结果为:0.1527)
static int ROUND_HALF_DOWN;//在保留的最后一位小数之后的数,> 0.5 向上+1 ,否则直接舍去(保留4位小数,0.15264结果为:0.1526)
最后
以上就是明亮乌龟为你收集整理的BigInteger与BigDecimal的全部内容,希望文章能够帮你解决BigInteger与BigDecimal所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复