扩充:

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常用的方法

  1. 使用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 的意思