介绍
java的BigDecimal比较大小,不能使用大于号、小于号、等于号这些做判断,记录一下普通大小的比较和范围大小比较的一些操作,方便直接使用
两BigDecimal直接做比较
使用的是compareTo方法直接比较
import java.math.BigDecimal;
public static void main(String[] args) {
BigDecimal a = new BigDecimal(1);
BigDecimal b = new BigDecimal(2);
int result = a.compareTo(b);
System.out.println(result);
}
代码案例输出-1
可能输出的结果如下
比大小出现的情况 | result打印结果 |
---|---|
a 大于 b ( a > b ) | 1 |
a 等于 b ( a = b ) | 0 |
a 小于 b ( a < b ) | -1 |
组合判断范围
min < mine < max
import java.math.BigDecimal;
public static boolean bigDecimalCompareTo2(BigDecimal mine, BigDecimal min, BigDecimal max){
//算大于
int num = mine.compareTo(min);
boolean a = false;
boolean b = false;
if(num > 0){
a = true;
}
//算小于
int num1 = mine.compareTo(max);
if(num1 < 0){
b = true;
}
//都符合
if(a & b){
return true;
}
return false;
}
public static void main(String[] args) {
BigDecimal mine = new BigDecimal(2);
BigDecimal min = new BigDecimal(1);
BigDecimal max = new BigDecimal(3);
boolean b = bigDecimalCompareTo2(mine, min, max);
System.out.println(b);
}
min <= mine < max
import java.math.BigDecimal;
public static boolean bigDecimalCompareTo(BigDecimal mine, BigDecimal min, BigDecimal max){
//算大于 等于
int num = mine.compareTo(min);
boolean a = false;
boolean b = false;
if(num > 0 || num == 0){
a = true;
}
//算小于
int num1 = mine.compareTo(max);
if(num1 < 0){
b = true;
}
//都符合
if(a & b){
return true;
}
return false;
}
public static void main(String[] args) {
BigDecimal mine = new BigDecimal(3);
BigDecimal min = new BigDecimal(1);
BigDecimal max = new BigDecimal(3);
boolean b = bigDecimalCompareTo(mine, min, max);
System.out.println(b);
}
min < mine <= max
import java.math.BigDecimal;
public static boolean bigDecimalCompareTo1(BigDecimal mine, BigDecimal min, BigDecimal max){
//算大于
int num = mine.compareTo(min);
boolean a = false;
boolean b = false;
if(num > 0){
a = true;
}
//算小于 等于
int num1 = mine.compareTo(max);
if(num1 < 0 || num1 == 0){
b = true;
}
//都符合
if(a & b){
return true;
}
return false;
}
public static void main(String[] args) {
BigDecimal mine = new BigDecimal(3);
BigDecimal min = new BigDecimal(1);
BigDecimal max = new BigDecimal(3);
boolean b = bigDecimalCompareTo1(mine, min, max);
System.out.println(b);
}
min <= mine <= max
import java.math.BigDecimal;
public static boolean bigDecimalCompareTo3(BigDecimal mine, BigDecimal min, BigDecimal max){
//算大于 等于
int num = mine.compareTo(min);
boolean a = false;
boolean b = false;
if(num > 0 || num == 0){
a = true;
}
//算小于 等于
int num1 = mine.compareTo(max);
if(num1 < 0 || num1 == 0){
b = true;
}
//都符合
if(a & b){
return true;
}
return false;
}
public static void main(String[] args) {
BigDecimal mine = new BigDecimal(3);
BigDecimal min = new BigDecimal(1);
BigDecimal max = new BigDecimal(3);
boolean b = bigDecimalCompareTo3(mine, min, max);
System.out.println(b);
}
结语
bigDecimal的比较比起其他类型来说,算比较麻烦的,把这个记下来方便使用,也分享给需要的人