BigDecimal 比较大小(加减等)

简介: BigDecimal 比较大小(加减等)

扩充:

BigDecimal比较大小

这个类是java里精确计算的类,下面说一下两个BigDecimal对象大小,相等的判断

1 比较对象是否相等

一般的对象用equals,但是BigDecimal比较特殊,举个例子:

BigDecimal a=BigDecimal.valueOf(1.0);

BigDecimal b=BigDecimal.valueOf(1.000);

在现实中这两个数字是相等的,但是如果用
 a.equals(b)结果是false;怎么不相等了呢?因为equals是比较内容,“1.0”和“1.000”当然不一样了
 解决办法:
        if(a.compareTo(b)==0) 结果是true


compareTo() 方法用于两种方式的比较:


字符串与对象进行比较。

按字典顺序比较两个字符串。


参数

o – 要比较的对象。


anotherString – 要比较的字符串。


返回值

返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。


如果参数字符串等于此字符串,则返回值 0;

如果此字符串小于字符串参数,则返回一个小于 0 的值;

如果此字符串大于字符串参数,则返回一个大于 0 的值。


说明:

如果第一个字符和参数的第一个字符不等,结束比较,返回第一个字符的ASCII码差值。

如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至不等为止,返回该字符的ASCII码差值。 如果两个字符串不一样长,可对应字符又完全一样,则返回两个字符串的长度差值。


EG:

public class Test {
    public static void main(String args[]) {
        String str1 = "Strings";
        String str2 = "Strings";
        String str3 = "Strings123";
        int result = str1.compareTo( str2 );
        System.out.println(result);
        result = str2.compareTo( str3 );
        System.out.println(result);
        result = str3.compareTo( str1 );
        System.out.println(result);
    }
}


以上程序执行结果为:

0
-3
3
BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}


加减等

java.math.BigDecimal常用的方法


使用compareTo比较大小,返回结果int类型

0 表示相等 ,1 表示大于, -1 表示大于

// a大于b,即 val = 1;b小于a,即 val2 = -1
BigDecimal a = new BigDecimal(9);
BigDecimal b = new BigDecimal(1);
int val = a.compareTo(b);
System.out.println("a大于b,结果 val = "+val);
int val2 = b.compareTo(a);
System.out.println("b小于a,结果 val2 = "+val2);


打印结果:

a大于b,结果 val = 1
b小于a,结果 val2 = -1
```java
//加法
BigDecimal sum =  a.add(b);
System.out.println("a + b = " + sum);
//减法
BigDecimal c = a.subtract(b);
System.out.println("a - b = " + c);
//乘法
BigDecimal d = a.multiply(b);
System.out.println("a * b = " + d);
//除法
BigDecimal e = a.divide(b);
System.out.println("a / b = " + e);


打印结果:

a + b = 10
a - b = 8
a * b = 9
a / b = 9


我自己写的demo

if (new BigDecimal(onceAmt).multiply(new BigDecimal(inRule)).compareTo(new BigDecimal(sum)) < 1)


onceAmt*inRule<=sum 的意思

相关文章
|
6月前
|
存储 Java
BigDecimal类型的数据如何保留小数点后四位
BigDecimal类型的数据如何保留小数点后四位
190 0
|
6月前
|
测试技术
【日常记录】——对BigDecimal除法运算时遇到的Bug
【日常记录】——对BigDecimal除法运算时遇到的Bug
|
5月前
|
Java
bigdecimal加减乘除
bigdecimal加减乘除
|
5月前
|
存储
高精度(小数——BigDecimal)
高精度(小数——BigDecimal)
BigDecimal如何相除并保留小数后两位(多种方法比较可选)
BigDecimal如何相除并保留小数后两位(多种方法比较可选)
198 0
|
Java
BigDecimal详解和精度问题
BigDecimal详解和精度问题
135 0
|
缓存 安全 Java
BigDecimal
BigDecimal
3155 3
BigDecimal加减乘除计算以及比较大小
BigDecimal加减乘除计算以及比较大小
206 0
BigDecimal加减乘除计算以及比较大小
BigDecimal加减乘除计算
BigDecimal加减乘除计算
91 0
BigDecimal加减乘除以及大小比较
BigDecimal加减乘除以及大小比较
100 0