比integer、double还大的整型和浮点型(BigInteger、BigDecimal) | 您所在的位置:网站首页 › Java中的浮点类型有哪些 › 比integer、double还大的整型和浮点型(BigInteger、BigDecimal) |
文章目录
BigInteger类BigDecimal类BigDecimal类当中除法除不尽问题
BigInteger类
在Java当中,是有许多数字要进行处理的类,比如Integer类,但是Integer类它也是有上限的。它的最大值就是到2^31-1. 如果我们此时想要表示更大的数,那就用Integer是无法表示的了,所在在Java当中提供了BigInteger类。 BigInteger类支持的数字可以说是无限大的,且支持任意精度的整数,也就是说他可以准确的表示任意数值而不会产生丢失的。 在这里也强调一下,因为传入的数型是字符型,所以在做运算的时候,不能使用 + - * / 对应的就是使用它们的方法: add(),subtract(),multiply(),divide() 还有一些常用方法: equals方法。进行比较 代码演示一下: import java.math.BigInteger; public class Demo01 { public static void main(String[] args) { BigInteger bigInteger1 = new BigInteger("2222222222222222222222222222222"); BigInteger bigInteger2 = new BigInteger("1111111111111111111111111111111"); System.out.println("bigInteger1大数为:" + bigInteger1); System.out.println("bigInteger2大数为:" + bigInteger2); System.out.println("两个大数相加:" + bigInteger1.add(bigInteger2));//加 System.out.println("两个大数相减:" + bigInteger1.subtract(bigInteger2));//减 System.out.println("两个大数相乘:" + bigInteger1.multiply(bigInteger2));//乘 System.out.println("两个大数相除:" + bigInteger1.divide(bigInteger2));//除 System.out.println("两个大数相比:" + bigInteger1.equals(bigInteger2));//equals进行比较 } }在做除法的时候,如果有小数位,是这接截取掉小数位。 当然这方面不仅仅有有整型的,也有浮点型。 BigDecimal类当然浮点型的精度也是可以尽可能大的。 import java.math.BigDecimal; public class Demo02 { public static void main(String[] args) { BigDecimal bigDecimal1 = new BigDecimal("12232423432432.53241234324"); BigDecimal bigDecimal2 = new BigDecimal("2.0"); System.out.println("bigDecimal1值: " + bigDecimal1); System.out.println("bigDecimal2值: " + bigDecimal2); System.out.println("加:" + bigDecimal1.add(bigDecimal2)); System.out.println("减:" + bigDecimal1.subtract(bigDecimal2)); System.out.println("乘:" + bigDecimal1.multiply(bigDecimal2)); System.out.println("除:" + bigDecimal1.divide(bigDecimal2)); } }在BigDecimal的方法里面,也更好的解决java语言里面的精度问题(比如出现0.1x3 == 0.3的结果为false的问题) 但是在使用BigDecimal的时候也有一个点需要注意一下(当遇到不能除净的话,它会选择报错的。) 所以在做除法的时候,直接给它做一个截取位数就好。 先来看一个方法: public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) divisor - 除数。 scale - 小数点后保留几位 roundingMode - 选择舍入模式 所以我们就可以将它写成这样: 舍入模式选择: 模式意思ROUND_CEILING向正无穷取数ROUND_DOWN向0取数ROUND_FLOOR向负无穷取数ROUND_HALF_DOWN四舍五入遇到 .5向下取数ROUND_HALF_UP四舍五入遇到 .5向上取数ROUND_HALF_EVEN四舍五入遇到5看前面的数,大于5向上,小于5向下,等于5再向前看。 |
CopyRight 2018-2019 实验室设备网 版权所有 |