compareto方法bigdecimal(重写compareto方法排序原理)

admin 506 0

很多朋友对于compareto方法bigdecimal和重写compareto方法排序原理不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

一、big decimal.compareTo(bigdecimal)

1、BigDecimal比较大小使用compareTo(BigDecimal)方法:

2、int flag= bigdemical.compareTo(bigdemical1)。

3、flag=-1,表示bigdemical小于bigdemical1。

4、flag=0,表示bigdemical等于bigdemical1。

5、flag=1,表示bigdemical大于bigdemical1。

6、实际中直接跟0比较就可以了,别跟-1或者1比较。

7、BigDecimal(int)创建一个具有参数所指定整数值的对象。

8、BigDecimal(double)创建一个具有参数所指定双精度值的对象。(不建议采用)

9、BigDecimal(long)创建一个具有参数所指定长整数值的对象。

10、BigDecimal(String)创建一个具有参数所指定以字符串表示的数值的对象。

二、BigInteger与BigDecimal

1、在Java中,由CPU原生提供的整型最大范围是64位 long型整数。使用 long型整数可以直接通过CPU指令进行计算,速度非常快。

2、如果我们使用的整数范围超过了 long型怎么办?这个时候,就只能用软件来模拟一个大整数。 java.math.BigInteger就是用来表示任意大小的整数。 BigInteger内部用一个 int[]数组来模拟一个非常大的整数:

3、对 BigInteger做运算的时候,只能使用实例方法,例如,加法运算:

4、和 long型整数运算比, BigInteger不会有范围限制,但缺点是速度比较慢。

5、也可以把 BigInteger转换成 long型:

6、使用 longValueExact()方法时,如果超出了 long型的范围,会抛出 ArithmeticException。

7、 BigInteger和 Integer、 Long一样,也是不可变类,并且也继承自 Number类。因为 Number定义了转换为基本类型的几个方法:

8、因此,通过上述方法,可以把 BigInteger转换成基本类型。如果 BigInteger表示的范围超过了基本类型的范围,转换时将丢失高位信息,即结果不一定是准确的。如果需要准确地转换成基本类型,可以使用 intValueExact()、 longValueExact()等方法,在转换时如果超出范围,将直接抛出 ArithmeticException异常。

9、如果 BigInteger的值甚至超过了 float的最大范围,那么返回的 float是什么呢?

10、和 BigInteger类似, BigDecimal可以表示一个任意大小且精度完全准确的浮点数。

11、通过 BigDecimal的 stripTrailingZeros()方法,可以将一个 BigDecimal格式化为一个相等的,但去掉了末尾0的 BigDecimal:

12、如果一个 BigDecimal的 scale()返回负数,例如,-2,表示这个数是个整数,并且末尾有2个0。

13、可以对一个 BigDecimal设置它的 scale,如果精度比原始值低,那么按照指定的方法进行四舍五入或者直接截断:

14、对 BigDecimal做加、减、乘时,精度不会丢失,但是做除法时,存在无法除尽的情况,这时,就必须指定精度以及如何进行截断:

15、还可以对 BigDecimal做除法的同时求余数:

16、调用 divideAndRemainder()方法时,返回的数组包含两个 BigDecimal,分别是商和余数,其中商总是整数,余数不会大于除数。我们可以利用这个方法判断两个 BigDecimal是否是整数倍数:

17、在比较两个 BigDecimal的值是否相等时,要特别注意,使用 equals()方法不但要求两个 BigDecimal的值相等,还要求它们的 scale()相等:

18、必须使用 compareTo()方法来比较,它根据两个值的大小分别返回负数、正数和0,分别表示小于、大于和等于。

19、总是使用 compareTo()比较两个 BigDecimal的值,不要使用 equals()!

20、如果查看 BigDecimal的源码,可以发现,实际上一个 BigDecimal是通过一个 BigInteger和一个 scale来表示的,即 BigInteger表示一个完整的整数,而 scale表示小数位数:

21、 BigDecimal也是从 Number继承的,也是不可变对象。

三、BigDecimal 怎么比较大小

1、BigDecimal比较大小使用compareTo(BigDecimal)方法:

2、int flag= bigdemical.compareTo(bigdemical1)。

3、flag=-1,表示bigdemical小于bigdemical1。

4、flag=0,表示bigdemical等于bigdemical1。

5、flag=1,表示bigdemical大于bigdemical1。

6、实际中直接跟0比较就可以了,别跟-1或者1比较。

7、BigDecimal(int)创建一个具有参数所指定整数值的对象。

8、BigDecimal(double)创建一个具有参数所指定双精度值的对象。(不建议采用)

9、BigDecimal(long)创建一个具有参数所指定长整数值的对象。

10、BigDecimal(String)创建一个具有参数所指定以字符串表示的数值的对象。

四、BigDecimal比较大小用什么方法

1、BigDecimal比较大小使用compareTo(BigDecimal)方法:

2、int flag= bigdemical.compareTo(bigdemical1)。

3、flag=-1,表示bigdemical小于bigdemical1。

4、flag=0,表示bigdemical等于bigdemical1。

5、flag=1,表示bigdemical大于bigdemical1。

6、实际中直接跟0比较就可以了,别跟-1或者1比较。

7、BigDecimal(int)创建一个具有参数所指定整数值的对象。

8、BigDecimal(double)创建一个具有参数所指定双精度值的对象。(不建议采用)

9、BigDecimal(long)创建一个具有参数所指定长整数值的对象。

10、BigDecimal(String)创建一个具有参数所指定以字符串表示的数值的对象。

五、bigDecimal的构造方法

1、BigDecimal比较大小使用compareTo(BigDecimal)方法:

2、int flag= bigdemical.compareTo(bigdemical1)。

3、flag=-1,表示bigdemical小于bigdemical1。

4、flag=0,表示bigdemical等于bigdemical1。

5、flag=1,表示bigdemical大于bigdemical1。

6、实际中直接跟0比较就可以了,别跟-1或者1比较。

7、BigDecimal(int)创建一个具有参数所指定整数值的对象。

8、BigDecimal(double)创建一个具有参数所指定双精度值的对象。(不建议采用)

9、BigDecimal(long)创建一个具有参数所指定长整数值的对象。

10、BigDecimal(String)创建一个具有参数所指定以字符串表示的数值的对象。

好了,文章到此结束,希望可以帮助到大家。