概述
扩充:
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 的意思
最后
以上就是高挑月饼为你收集整理的BigDecimal 比较大小(加减等)的全部内容,希望文章能够帮你解决BigDecimal 比较大小(加减等)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复